Создание простого модуля для Joomla 4.x. Разработка базового модуля - Часть 1

  1. Введение в написание собственного модуля для Joomla 4
  2. Структура файлов модуля для Joomla 4
  3. Создание mod_foo.php
    1. Код файла mod_foo.php
  4. Создание tmpl/default.php
    1. Код файла tmpl/default.php
  5. Создание mod_foo.xml
    1. Код файла mod_foo.xml
  6. Создание языковых файлов модуля для Joomla 4


Введение в написание собственного модуля для Joomla 4

Вы можете увидеть множество примеров модулей в стандартной установке Joomla. Например:

  • Меню
  • Последние Новости
  • Форма входа в систему
  • и многое другое.

В этом уроке будет объяснено, как создать простой модуль для Joomla 4. Из этого урока вы узнаете основную файловую структуру модуля Joomla 4. Затем эту базовую структуру можно расширить для создания более сложных модулей.

Структура файлов модуля для Joomla 4

Существует несколько основных файлов, которые используются в стандартном шаблоне разработки модуля:

  • mod_foo.php
    • Этот файл является основной точкой входа для модуля. Он выполнит все необходимые процедуры инициализации, вызовет вспомогательные процедуры для сбора любых необходимых данных и включит шаблон, который будет отображать вывод модуля.
  • mod_foo.xml
    • Этот файл содержит информацию о модуле. Он определяет файлы, которые необходимо установить с помощью установщика Joomla и задает параметры конфигурации для модуля.
  • tmpl/default.php
    • Это шаблон модуля. Этот файл будет содержать данные, собранные mod_foo.php и сгенерирует HTML-код, который будет отображаться на странице сайта в месте его вывода.
  • language/en-GB/mod_foo.ini и language/en-GB/mod_foo.sys.ini
    • Это файлы, которые предоставляют текст на английском языке Соединенного Королевства Островного Государства.

Создание mod_foo.php

Код в mod_foo.php файле будет выполнять следующие задачи:

  • Импортирует класс ModuleHelper в текущую область.
    • Он нам понадобится позже для отображения выходных данных.
  • Включит шаблон для отображения выходных данных.

Вспомогательный класс импортируется в нашу текущую область в начале файла.

use Joomla\CMS\Helper\ModuleHelper;

В конце включаем шаблон для отображения выходных данных через:

require ModuleHelper::getLayoutPath('mod_foo', $params->get('layout', 'default'));

Код файла mod_foo.php

Код файла mod_foo.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]
 */

// Но пасаран шарахающим сучностям!
defined('_JEXEC') or die;

use Joomla\CMS\Helper\ModuleHelper;

require ModuleHelper::getLayoutPath('mod_foo', $params->get('layout', 'default'));

Примечаниеː
В Joomla 3.x вы обычно использовали строку типа $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));. Теперь это больше не нужно. Зыкните по этой ссылке, если любопытно: https://github.com/joomla/joomla-cms/pull/17447.

Одна строка, которую мы до сих пор не объяснили, - это первая строка defined('_JEXEC') or die;. Эта строка проверяет, включен ли этот файл из приложения Joomla и исключает его запуск вне CMS Joomla. Это необходимо для предотвращения введения переменных и других потенциальных проблем безопасности, проблем с безопасностью и опасными проблемами.

Создание tmpl/default.php

Код файла default.php - это шаблон, который отображает вывод модуля на сайт или в админку Joomla.

Код файла 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]
 */

// Всем кыш, кто пришёл не через парадный вход!
defined('_JEXEC') or die;

echo '[PROJECT_NAME]';

Важно отметить, что файл шаблона имеет ту же область действия, что и mod_foo.php. Это означает, что переменная может быть определена в mod_foo.php файл, а затем используется в файле шаблона без каких-либо дополнительных объявлений или вызовов функций.

Создание mod_foo.xml

Код файла mod_foo.xml - это установочный код для внедрения в CMS Joomla 4. Большинство записей не требуют пояснений (Прим.переводчика: ибо лень их пояснять).

Код файла 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>[ДАТА]</creationDate>
    <author>[АВТОР]</author>
    <authorEmail>[ПОЧТА_АВТОРА]</authorEmail>
    <authorUrl>[URL_АВТОРА]</authorUrl>
    <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>
    <files>
        <filename module="mod_foo">mod_foo.php</filename>
        <folder>tmpl</folder>
        <folder>language</folder>
        <filename>mod_foo.xml</filename>
    </files>
</extension>

Создание языковых файлов модуля для Joomla 4

Файлы language/en-GB/mod_foo.ini и language/en-GB/mod_foo.sys.ini используются для перевода текста во внешнем интерфейсе (на сайте) и в бэкэнде (в админке). Обратите внимание, что структура языковых файлов была обновлена в Joomla 4 и языковые префиксы для отдельных файлов в языковой папке больше не требуются.

Код для language/en-GB/mod_foo.sys.ini выглядит следующим образом:

MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"

Код для language/en-GB/mod_foo.ini выглядит следующим образом:

MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"

Файл .sys.ini используется для перевода описания расширения при установке, а языковые константы из .ini используются для перевода остальных строк и описания при просмотре вашего расширения (в текущем контексте - модуля).

Более подробную информацию о языковых файлах можно не {Прим.переводчика} найти здесь.

Перевод с английского официальной документации Joomla 4:
https://docs.joomla.org/J4.x:Creating_a_Simple_Module

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

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

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

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