Как создать модуль Joomla 4.x
Модуль — это дополнение к сайту, расширяющее функционал. Модуль обычно занимает второстепенную часть веб-страницы и не считается основным элементом страницы.
Он может отображаться на разных позициях, и вы можете выбрать, на каких активных пунктах меню он должен отображаться. Модули — это легкие и гибкие расширения. Они используются для небольших фрагментов страницы, которые, как правило, менее сложны и могут быть видны в разных компонентах.
Часть 1: Структура файла
Есть основные файлы, которые используются в стандартной схеме разработки модулей:
mod_hello.php: этот файл является основной точкой входа для модуля. Он выполняет все необходимые процедуры инициализации, вызывает вспомогательные процедуры для сбора необходимых данных и включает шаблон, который будет отображать выходные данные модуля.
Helper/HelloHelper.php: этот файл содержит вспомогательный класс, который используется для извлечения данных, которые будут отображаться в выводе модуля.
mod_hello.xml: этот файл содержит информацию о модуле. Он определяет файлы, которые должны быть установлены установщиком Joomla, и задает параметры конфигурации для модуля.
tmpl/default.php: это шаблон модуля. Этот файл берет данные, собранные mod_hello.php, и генерирует HTML для отображения на странице.
language/en-GB/en-GB.mod_hello.ini и language/en-GB/en-GB.mod_hello.sys.ini: это файлы, содержащие текст на английском языке Соединенного Королевства.
1. mod_hello.php
Файл mod_hello.php выполняет следующие задачи:
Импортируйте класс ModuleHelper в текущую область. Он понадобится вам позже для отображения вывода.
Импортируйте вспомогательный класс модуля в текущую область в начале файла.
Включите шаблон для отображения вывода.
Вспомогательный класс импортируется в текущую область в начале файла.
используйте Joomla\CMS\Helper\ModuleHelper;
Затем импортируйте вспомогательный класс модуля.
используйте Joomla\Module\Hello\Site\Helper\HelloHelper;
Затем вы включаете шаблон для отображения вывода.
require ModuleHelper::getLayoutPath('mod_hello', $params->get('layout', 'default'));
Завершенный файл mod_hello.php
<?php
/**
* @пакет [ИМЯ ПАКЕТА]
*
* @автор [AUTHOR] <[AUTHOR_EMAIL]>
* @авторское право [АВТОРСКОЕ ПРАВО]
* @license Стандартная общественная лицензия GNU версии 2 или выше; см. ЛИЦЕНЗИЯ.txt
* @ссылка [AUTHOR_URL]
*/
// Нет прямого доступа к этому файлу
определено('_JEXEC') или умереть;
используйте Joomla\CMS\Helper\ModuleHelper;
используйте Joomla\Module\Hello\Site\Helper\HelloHelper;
$test = HelloHelper::getText();
require ModuleHelper::getLayoutPath('mod_hello', $params->get('layout', 'default'));
Первая строка проверяет, подключается ли этот файл из приложения Joomla. Это необходимо для предотвращения внедрения переменных и других потенциальных проблем с безопасностью.
2. Помощник/HelloHelper.php
Вспомогательный класс должен принадлежать пространству имен. Важно, чтобы эта строка находилась в начале файла.
пространство имен Joomla\Module\Hello\Site\Helper;
Затем вы создаете класс с методами.
<?php
/**
* @пакет Joomla.Сайт
* @подпакет mod_hello
*
* @copyright Copyright (C) 2005–2019 Open Source Matters, Inc. Все права защищены.
* @license Стандартная общественная лицензия GNU версии 2 или выше; см. ЛИЦЕНЗИЯ.txt
*/
пространство имен Joomla\Module\Hello\Site\Helper;
// Нет прямого доступа к этому файлу
определено('_JEXEC') или умереть;
класс HelloHelper
{
общедоступная статическая функция getText()
{
вернуть «FooHelpertest»;
}
}
Файл default.php — это шаблон, который отображает вывод модуля.
<?php
/**
* @пакет [ИМЯ ПАКЕТА]
*
* @автор [AUTHOR] <[AUTHOR_EMAIL]>
* @авторское право [АВТОРСКОЕ ПРАВО]
* @license Стандартная общественная лицензия GNU версии 2 или выше; см. ЛИЦЕНЗИЯ.txt
* @ссылка [AUTHOR_URL]
*/
// Нет прямого доступа к этому файлу
определено('_JEXEC') или умереть;
эхо '[PROJECT_NAME]' . $ тест;
Файл шаблона имеет ту же область действия, что и файл mod_hello.php. Это означает, что переменная может быть определена в файле mod_hello.php, а затем использоваться в файле шаблона без каких-либо дополнительных объявлений или вызовов функций.
4. mod_hello.xml
Файл mod_hello.xml является установочным файлом. Вы должны добавить строку для пространства имен, которое устанавливается автоматически в Joomla. После вставки и установки пространство имен известно загрузчику JPATH_LIBRARIES. '/autoload_psr4.php'.
<?xml версия="1.0" кодировка="utf-8"?>
<тип расширения="модуль" версия="4.0" клиент="сайт" метод="обновление">
<name>MOD_HELLO</name>
<creationDate>[ДАТА]</creationDate>
<автор>[АВТОР]</автор>
<authorEmail>[AUTHOR_EMAIL]</authorEmail>
<authorUrl>[AUTHOR_URL]</authorUrl>
<авторское право>[АВТОРСКОЕ ПРАВО]</авторское право>
<license>Стандартная общественная лицензия GNU версии 2 или выше; см. LICENSE.txt</license>
<версия>1.0</версия>
<description>MOD_HELLO_XML_DESCRIPTION</description>
<namespace>Joomla\Module\Hello</namespace>
<файлы>
<filename module="mod_hello">mod_hello.php</filename>
<папка>tmpl</папка>
<folder>Помощник</folder>
<папка>язык</папка>
<filename>mod_hello.xml</filename>
</файлы>
</расширение>
5. Языковые файлы
Файлы используются для перевода текста во внешнем и внутреннем интерфейсе.
MOD_HELLO="[ИМЯ_ПРОЕКТА]"
MOD_HELLO_XML_DESCRIPTION="Привет модуль"
Часть 2: Добавление параметров
Параметры вставляются в файл XML с помощью полей формы. Во-первых, вы устанавливаете пользовательские параметры. Затем вы вставляете поля Joomla по умолчанию, чтобы вы могли использовать кеш, суффикс класса модуля и макеты.
Параметры вставляются между:
<конфигурация>
<поля имя="параметры">
</поля>
</config>
Например, пользовательский параметр:
<имя набора полей="базовый">
<поле
имя = "домен"
тип = "ссылка"
метка = "MOD_HELLO_FIELD_URL_LABEL"
фильтр = "ссылка"
/>
</поля>
Поля Joomla по умолчанию
<имя набора полей="расширенный">
<поле
имя = "макет"
тип = "макет модуля"
метка = "JFIELD_ALT_LAYOUT_LABEL"
класс = «выбор по индивидуальному заказу»
/>
<поле
имя = "moduleclass_sfx"
тип = "текстовое поле"
метка = "COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
строки = "3"
/>
<поле
имя = "кэш"
тип = "список"
метка = "COM_MODULES_FIELD_CACHING_LABEL"
по умолчанию = "0"
>
<option value="1">JGLOBAL_USE_GLOBAL</option>
<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
</поле>
<поле
имя = "кэш_время"
тип = "число"
метка = "COM_MODULES_FIELD_CACHE_TIME_LABEL"
по умолчанию = "0"
/>
<поле
имя = «Кэшемод»
тип = "скрытый"
по умолчанию = "itemid"
>
<option value="itemid"></option>
</поле>
</поля>
Где и как получить значение параметров
Вы можете получить доступ к значению через переменную $params в файле tmpl/default.php.
$domain = $params->get('домен', 'https://www.joomla.org');
Вы используете это значение.
<a href="/<?php эхо $домен; ?>">
<?php эхо '[PROJECT_NAME]' . $ тест; ?>
</a>