Создание простого модуля для 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


Требования

Вам нужна 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

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Войдите чтобы комментировать