Создание простого модуля для Joomla 4.x. Настройкаː Добавление параметров с помощью полей формы - Часть 3

  1. Требования
  2. Настройка с помощью полей формы и параметров
    1. Структура файлов
    2. Редактирование файла mod_foo.xml
      1. Итоговый файл mod_foo.xml
    3. Редактирование файла tmpl/default.php
      1. Итоговый файл tmpl/default.php
    4. Редактирование файла language/en-GB/en-GB.mod_foo.ini
      1. Итоговый файл language/en-GB/en-GB.mod_foo.ini

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Требования

Вам нужна Joomla 4.x для этого урока (на момент написания - Joomla 4.0.0-alpha6-dev)

Настройка с помощью полей формы и параметров

Поля форм предоставляют широкие возможности настройки в Joomla 4, а модули являются единственным способом, позволяющим пользователю настроить модуль в соответствии с потребностями своего сайта.

В этом случае мы собираемся расширить наш предыдущий пример, используя поле URL для вставки домена, который мы можем использовать в качестве ссылки в интерфейсе. Чтобы это произошло, мы будем использовать тип поля формы URL.

После этого мы вставим параметры, которые позволяют использовать стандартную функциональность Joomla.

Давайте посмотрим, как их использовать в Joomla 4.

Структура файлов

Мы изменим следующие файлы:

  • mod_foo.xml - Это файл, в который мы добавляем поля.
  • tmpl/default.php - В этом файле функционал того, как можно использовать данные поля.
  • language/en-GB/en-GB.mod_foo.ini - Здесь мы используем строку языка, чтобы поле могло быть правильно помечено на разных языках.

Редактирование файла mod_foo.xml

Сначала мы задаем пользовательский параметр.

<field
    name="domain"
    type="url"
    label="MOD_FOO_FIELD_URL_LABEL"
    filter="url"
/>

Затем мы вставляем поля Joomla по умолчанию, чтобы мы могли использовать кэш (cache), суффикс класса модуля (moduleclass-suffix) и макеты (layouts).

<field
    name="layout"
    type="modulelayout"
    label="JFIELD_ALT_LAYOUT_LABEL"
    class="custom-select"
/>

<field
    name="moduleclass_sfx"
    type="textarea"
    label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
    rows="3"
/>

<field
    name="cache"
    type="list"
    label="COM_MODULES_FIELD_CACHING_LABEL"
    default="0"
>
    <option value="1">JGLOBAL_USE_GLOBAL</option>
    <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
</field>

<field
    name="cache_time"
    type="number"
    label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
    default="0"
/>

<field
    name="cachemode"
    type="hidden"
    default="itemid"
>
    <option value="itemid"></option>
</field>

Итоговый файл mod_foo.xml

Полный файл mod_foo.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="4.0" client="site" method="upgrade">
    <name>MOD_FOO</name>
    <creationDate>[DATE]</creationDate>
    <author>[AUTHOR]</author>
    <authorEmail>[AUTHOR_EMAIL]</authorEmail>
    <authorUrl>[AUTHOR_URL]</authorUrl>
    <copyright>[COPYRIGHT]</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <version>1.0</version>
    <description>MOD_FOO_XML_DESCRIPTION</description>
    <namespace>Joomla\Module\Foo</namespace>
    <files>
        <filename module="mod_foo">mod_foo.php</filename>
        <folder>tmpl</folder>
        <folder>Helper</folder>
        <folder>language</folder>
        <filename>mod_foo.xml</filename>
    </files>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field
                    name="domain"
                    type="url"
                    label="MOD_FOO_FIELD_URL_LABEL"
                    filter="url"
                />
            </fieldset>
            <fieldset name="advanced">
                <field
                    name="layout"
                    type="modulelayout"
                    label="JFIELD_ALT_LAYOUT_LABEL"
                    class="custom-select"
                />
                <field
                    name="moduleclass_sfx"
                    type="textarea"
                    label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
                    rows="3"
                />
                <field
                    name="cache"
                    type="list"
                    label="COM_MODULES_FIELD_CACHING_LABEL"
                    default="0"
                >
                    <option value="1">JGLOBAL_USE_GLOBAL</option>
                    <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
                </field>
                <field
                    name="cache_time"
                    type="number"
                    label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
                    default="0"
                />
                <field
                    name="cachemode"
                    type="hidden"
                    default="itemid"
                >
                    <option value="itemid"></option>
                </field>
            </fieldset>
        </fields>
    </config>
</extension>

Редактирование файла tmpl/default.php

Мы можем использовать значение параметра для создания гиперссылки на фронтенде сайта. Мы можем получить доступ к значению через переменную $params.

$domain = $params->get('domain', 'https://www.joomla.org');

Позже мы будем использовать это значение для создания гиперссылки.

<a href="/<?php echo $domain; ?>">
	<?php echo '[PROJECT_NAME]' . $test; ?>
</a>

Итоговый файл tmpl/default.php

Итоговый файл tmpl/default.php выглядит следующим образом:

<?php
/**
 * @package    [PACKAGE_NAME]
 *
 * @author     [AUTHOR] <[AUTHOR_EMAIL]>
 * @copyright  [COPYRIGHT]
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 * @link       [AUTHOR_URL]
 */

// No direct access to this file
defined('_JEXEC') or die;

$domain = $params->get('domain', 'https://www.joomla.org');
?>

<a href="/<?php echo $domain; ?>">
	<?php echo '[PROJECT_NAME]' . $test; ?>
</a>

Редактирование файла language/en-GB/en-GB.mod_foo.ini

Здесь мы можем указать текст для английской версии метки поля.

MOD_FOO_FIELD_URL_LABEL="Url"

Итоговый файл language/en-GB/en-GB.mod_foo.ini

Итоговый файл language/en-GB/en-GB.mod_foo.ini выглядит так:

MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"
MOD_FOO_FIELD_URL_LABEL="Url"

Вы читаете статью из небольшого цикла:
«Создание простого модуля для Joomla 4.x»

  1. «Вступление»
  2. «Разработка базового модуля для CMS Joomla 4 - Часть 1»
    1. «Тестирование и Отладка первой части написанного модуля для Joomla 4»
  3. «Разработка базового модуля для CMS Joomla 4 - Часть 2. Добавление вспомогательного класса, использование пространства имён.»
    1. «Тестирование и Отладка второй части написанного модуля для Joomla 4»
  4. «Разработка базового модуля для CMS Joomla 4 - Часть 3. Настройкаː Добавление параметров с помощью полей формы»
    1. «Тестирование и Отладка третьей части написанного модуля для Joomla 4»
  5. «Разработка базового модуля для CMS Joomla 4 - Часть 4. Использование сценария установки, обновления и удаления.»
  6. «Разработка базового модуля для CMS Joomla 4 - Часть 5. Добавление автоматического обновления расширения Joomla.»

Перевод с английского официальной документации Joomla 4:
https://docs.joomla.org/J4.x:Creating_a_Simple_Module

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню