
Joomla 4 поддерживает namespaces и автозагрузку классов через PSR-4, поэтому при написании кода важно соблюдать правильную структуру директорий и пространств имён. Это избавляет от лишних подключений файлов вручную и обеспечивает совместимость с будущими версиями CMS.
При разработке рекомендуется сразу закладывать возможность локализации: добавить файл перевода в папку language и использовать функцию Text::_(‘CONSTANT’). Это позволит адаптировать модуль для многоязычных сайтов без изменения исходного кода.
Подготовка структуры папок и файлов модуля
Минимальный набор включает папку mod_example в каталоге /modules. Внутри неё создаются:
mod_example.php– основной файл с логикой модуля.helper.php– вспомогательные функции (по необходимости).mod_example.xml– манифест для установки.- папка
/languageс подкаталогами по коду языка, например/language/en-GB/en-GB.mod_example.ini. - папка
/mediaдля CSS, JS и изображений.
Имена файлов должны совпадать с префиксом модуля. В манифесте прописываются все пути и зависимости. Для локализации рекомендуется сразу создавать структуру языковых файлов, даже если планируется один язык.
Создание файла манифеста module.xml

Файл module.xml определяет структуру и параметры модуля. Он располагается в корневой папке модуля и обязателен для корректной установки через админ-панель Joomla 4.
Минимальный пример файла:
<extension type="module" client="site" method="upgrade" version="4.0">
<name>mod_example</name>
<title>Пример модуля</title>
<version>1.0.0</version>
<description>Описание работы модуля</description>
<files>
<filename module="mod_example">mod_example.php</filename>
<filename>helper.php</filename>
<folder>tmpl</folder>
</files>
</extension>
Ключевые атрибуты и элементы:
| Элемент / атрибут | Назначение |
|---|---|
type="module" |
Определяет, что расширение является модулем |
client="site|administrator" |
Указывает область применения: фронтенд или панель администратора |
method="upgrade" |
Обеспечивает обновление модуля без удаления предыдущей версии |
<name> |
Системное имя папки модуля |
<title> |
Отображаемое название в админ-панели |
<version> |
Версия модуля для системы обновлений |
<description> |
Краткое описание в менеджере расширений |
<files> |
Перечень файлов и папок, входящих в состав модуля |
Файл module.xml должен быть сохранён в кодировке UTF-8 без BOM, иначе установка может завершиться ошибкой.
Реализация основного PHP-файла модуля

Главный файл модуля располагается в корне его папки и имеет имя вида mod_имя.php. Этот файл отвечает за подключение вспомогательных классов и формирование выходных данных.
В начале необходимо запретить прямой доступ к файлу, добавив строку:
defined('_JEXEC') or die;
Далее следует загрузка параметров и возможных вспомогательных функций:
$params = $module->params;
require_once __DIR__ . '/helper.php';
Вызывается метод помощника, например:
$data = ModMyModuleHelper::getData($params);
Последним этапом подключается шаблон отображения:
require JModuleHelper::getLayoutPath('mod_mymodule', $params->get('layout', 'default'));
Рекомендуется минимизировать количество логики в основном файле, ограничиваясь загрузкой параметров, вызовом методов из helper.php и рендерингом. Это повышает читаемость и упрощает поддержку кода.
Для загрузки шаблона используется метод require JModuleHelper::getLayoutPath('mod_имяМодуля');, размещаемый в файле mod_имяМодуля.php. Он автоматически ищет default.php в папке tmpl модуля или в папке переопределений шаблона сайта (templates/ваш_шаблон/html/mod_имяМодуля/).
Для передачи переменных в шаблон их определяют в mod_имяМодуля.php, после чего они доступны в default.php как обычные PHP-переменные. Например, $items может содержать массив данных, подготовленный в helper.php, а внутри default.php он используется для цикла foreach.
Если требуется несколько вариантов отображения, создаются дополнительные файлы, например list.php или grid.php, и загружаются через JModuleHelper::getLayoutPath('mod_имяМодуля', 'grid');.
Добавление настроек модуля в админке
Для управления параметрами модуля необходимо создать XML-файл конфигурации. Он размещается в корне модуля и должен иметь имя mod_имя_модуля.xml. Именно этот файл определяет структуру настроек, которые отображаются в административной панели.
Минимальный пример блока с параметрами:
<config>
<fields name="params">
<fieldset name="basic">
<field
name="title_color"
type="color"
label="Цвет заголовка"
default="#000000" />
<field
name="show_date"
type="radio"
label="Показывать дату"
default="1">
<option value="1">Да</option>
<option value="0">Нет</option>
</field>
</fieldset>
</fields>
</config>
Ключевые моменты:
- <fields name=»params»> – область, где описываются все параметры.
- fieldset – группировка полей в отдельные вкладки или секции.
- type определяет тип ввода: text, textarea, list, radio, color, media и др.
- default задаёт значение по умолчанию.
Чтобы использовать параметры в коде модуля, в файле mod_имя_модуля.php обращаются к объекту:
$titleColor = $params->get('title_color', '#000000');
$showDate = (bool) $params->get('show_date', 1);
Рекомендации:
- Группируйте параметры в логичные секции для удобства администратора.
- Используйте понятные названия и метки, избегайте технических терминов без необходимости.
- Проверяйте введённые значения в PHP-коде, даже если тип поля ограничивает ввод.
- Документируйте каждый параметр внутри XML-файла с помощью атрибута description.
Установка и тестирование модуля в Joomla 4

После завершения разработки собственного модуля необходимо его корректно установить и проверить работу. Joomla 4 использует формат пакета ZIP для установки расширений.
- Создание установочного пакета:
- Убедитесь, что структура папок соответствует требованиям Joomla:
mod_имя_модуля/, внутриtmplдля шаблонов иmod_имя_модуля.xmlдля описания модуля. - Упакуйте корневую папку модуля в ZIP-архив без вложенных директорий.
- Убедитесь, что структура папок соответствует требованиям Joomla:
- Установка через админ-панель:
- Перейдите в Система → Установить → Расширения.
- Выберите файл ZIP и нажмите «Загрузить и установить».
- После успешной установки появится уведомление с версией модуля и количеством установленных файлов.
- Проверка видимости модуля:
- Перейдите в Расширения → Модули и найдите ваш модуль по имени.
- Активируйте его и выберите позицию на шаблоне, которая существует в текущей теме.
- Установите уровень доступа, чтобы тестировать отображение для нужных групп пользователей.
- Тестирование функционала:
- Откройте фронтенд сайта и убедитесь, что модуль отображается в выбранной позиции.
- Проверьте корректность работы всех настроек, параметров и внешнего вида шаблона.
- Используйте инструменты разработчика браузера для проверки ошибок JavaScript или CSS-конфликтов.
- Для модулей с динамическим контентом проверяйте обработку данных через формы или API.
- Логирование и отладка:
- Включите режим отладки в Система → Общие настройки → Сайт → Отладка, чтобы отслеживать ошибки PHP и SQL.
- Используйте встроенные функции
Joomla\CMS\Log\Logдля записи событий модуля в лог. - При выявлении ошибок корректируйте код и повторно загружайте обновленный ZIP.
Только после успешного отображения модуля на фронтенде и проверки всех параметров можно считать процесс установки и тестирования завершённым. Следующий этап – публикация на боевом сайте или передача пакета пользователям.
Вопрос-ответ:
С чего начинается разработка собственного модуля для Joomla 4?
Первый шаг — определить назначение модуля и его функционал. Нужно понять, какую информацию он будет выводить и как взаимодействовать с пользователем. Затем создается структура папок и файлов, включающая основной PHP-файл модуля, XML-манифест и, при необходимости, файлы стилей и скриптов. XML-файл описывает модуль, его название, авторство, параметры и подключаемые файлы.
Как подключить параметры модуля и сделать их доступными в коде?
Параметры модуля указываются в XML-манифесте с помощью тегов $params, используя метод $params->get('имя_поля'). Так можно управлять выводом контента или стилем отображения в зависимости от настроек, заданных в панели администратора.
Как организовать вывод информации в модуле Joomla 4?
Для отображения данных используется основной PHP-файл модуля. Логика может быть вынесена в отдельный helper-класс, а шаблон — в файл tmpl/default.php. Такой подход позволяет отделить обработку данных от представления, упрощает поддержку и изменение внешнего вида. В шаблоне можно использовать обычный PHP-код для перебора массивов, формирования HTML-структур и подключения стилей.
Какие ошибки чаще всего возникают при создании собственного модуля?
Часто встречаются проблемы с путями к файлам и неправильным указанием их в XML-манифесте, что приводит к тому, что модуль не устанавливается. Еще одна распространенная ошибка — неправильное использование объекта $params или обращение к нему до инициализации. Также может возникнуть конфликт имен функций или классов при установке нескольких модулей с похожей структурой. Проверка структуры и внимательная работа с XML-файлом позволяют избежать большинства проблем.
