Как создать модуль 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»;
}
}

3. тмпл/default.php
Файл 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>

Добавить комментарий