Требования
Вам нужна 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»
- «Вступление»
- «Разработка базового модуля для CMS Joomla 4 - Часть 1»
- «Разработка базового модуля для CMS Joomla 4 - Часть 2. Добавление вспомогательного класса, использование пространства имён.»
- «Разработка базового модуля для CMS Joomla 4 - Часть 3. Настройкаː Добавление параметров с помощью полей формы»
- «Разработка базового модуля для CMS Joomla 4 - Часть 4. Использование сценария установки, обновления и удаления.»
- «Разработка базового модуля для CMS Joomla 4 - Часть 5. Добавление автоматического обновления расширения Joomla.»
Перевод с английского официальной документации Joomla 4:
https://docs.joomla.org/J4.x:Creating_a_Simple_Module
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)