Создание модуля для Joomla

Общая информация, файловая структура и функционал

Joomla
Добавление в избранное
Сохранить
Общая информация, файловая структура и функционал

Общая информация

Модуль – это легкое и гибкое расширение для отображения небольших порций информации на странице. Модули назначаются пунктами меню, таким образом можно контролировать их отображение на странице. Некоторые модули напрямую связаны с компонентами, а некоторые существуют сами по себе (например, модуль HTML).

Создание модуля является одной из самых простых вещей в разработке под Joomla. Кроме того, модуль можно смело назвать одним из самых стабильных расширений в Joomla, так как его базовая разработка для разных версий Joomla практически не отличается. Именно поэтому эта документация охватывает создание модуля как для Joomla 2.5.x, так и для Joomla 3. В процессе разработки я сразу буду пояснять отличия между этими версиями, если такие различия существуют.

Я решил отойти от стандартных HelloWorld! вариантов, поэтому в качестве примера, мы создадим модуль, который будет выбирать из базы данных последних зарегистрированных пользователей и отображать их на сайте. Модуль будет называться «Последние пользователи» или «Latest users». Сразу скажу, что похожий модуль «Новые пользователи» существует в Joomla.

Файловая структура

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

  • mod_latest_users.php – этот файл является главной точкой входа модуля. Он занимается необходимой инициализацией, вызывает хелпер для получения данных, а также подключает файл шаблона, который отобразит выходные данные модуля.
  • mod_latest_users.xml – этот файл манифеста содержит всю информацию о модуле. Он определяет файлы, которые должны быть установлены и включает в себя параметры конфигурации модуля.
  • helper.php – этот файл содержит класс хелпера, который является бизнес-логикой модуля и используется для получения информации, которая будет отображена в модуле (как правило из базы данных).
  • tmpl/default.php – это макет вывода модуля (шаблон). Этот файл принимает данные, полученные с помощью mod_latest_users.php и генерирует разметку для отображения на странице.

В дополнение к этим основным четырем файлам у нас будут присутствовать следующие элементы:

  • папка language – в ней будут расположены языковые файлы
  • папка media/css – в ней будет расположен CSS-файл style.css
  • файл tmpl/table.php – альтернативный макет вывода списка пользователей в виде таблицы

Вот как будет выглядеть файловая структура модуля:

/language/en-GB/en-GB.mod_latest_users.ini
/language/en-GB/en-GB.mod_latest_users.sys.ini
/language/ru-RU/ru-RU.mod_latest_users.ini
/language/ru-RU/ru-RU.mod_latest_users.sys.ini
/media/css/style.css
/tmpl/default.php
/tmpl/table.php
helper.php
mod_latest_users.php
mod_latest_users.xml

Описание функционала

Перед тем, как мы приступим к созданию модуля, нам необходимо определить его функционал:

  • выборка информации из базы данных;
  • возможность ограничения количества выбираемых данных – передача параметров модуля в хелпер и их использование;
  • возможность выбора макета вывода для отображения информации – использование параметров модуля для выбора файла макета: отображать в виде списка или в виде таблицы;
  • возможность выбора логики отображения информации - использование параметров в макете вывода для реализации различной логики вывода данных: отображать только логин, только имя или логин и имя вместе;
  • стилизация разметки (подключение CSS) – использование параметра media в файле манифеста для расположения CSS-файла и его подключение с помощью JHtml;
  • поддержка суффикса класса модуля;
  • кэширование – использование встроенных в Joomla механизмов кэширования модулей.

Думаю, что теоретического материала волне достаточно. В следующей части мы займемся практикой и приступим к разработке модуля.

Dmitry Rekun
Работаю в банковской сфере, а с веб-разработкой (непосредственно с Joomla) столкнулся в 2007 году. Теперь это моё хобби, а в редких случаях и вторая работа. Какое-то время вёл свой блог, но решил попробовать работать в команде. И вот c 2012 года я здесь :)

Подпишитесь на рассылку новостей CMScafe