Создание собственных расширений В этой главе... - О том, как создать модуль и компонент Установка созданных нами расширений Проблемы при установке расширений Работа с базой данных средствами Joomla Языковые файлы, создание многоязычных расширений Опять о типах расширений Как мы уже знаем, в Joomla существуют расширения трех типов: модули, компоненты и плагины. Модули используются для вывода информации и организации минимального взаимодействия с пользователем. На странице сайта может отображаться несколько модулей. Компонент используется для организации взаимодействия с пользователем и занимает всю центральную часть страницы. На странице сайта может быть только один компонент. Плагины же работают на более низком уровне и обрабатывают данные, передающиеся из Joomla в браузер пользователя и обратно. В этой книге мы поговорим о создании модулей и компонентов. Создание плагинов, учитывая всю сложность этого процесса, выходит за рамки этой книги. 1/8 Создание собственных расширений Мы не будем рассматривать основы РНР, а весь материал в этой главе будет рассчитан на то, что вы полностью владеете этим языком программирования. Если это не так, в любом книжном магазине вы без проблем найдете книжку по РНР (в том числе и мою). Разработка модуля Структура модуля Модуль состоит как минимум из двух файлов: служебного XML-файла и файла кода (PHP-файл). Первый файл содержит всю информацию о модуле, а также инструкции относительно установки модуля в системе. Второй файл содержит непосредственно сам PHP-код модуля. Опять о типах расширений Как мы уже знаем, в Joomla существуют расширения трех типов: модули, компоненты и плагины. Модули используются для вывода информации и организации минимального взаимодействия с пользователем. На странице сайта может отображаться несколько модулей. Компонент используется для организации взаимодействия с пользователем и занимает всю центральную часть страницы. На странице сайта может быть только один компонент. Плагины же работают на более низком уровне и обрабатывают данные, передающиеся из Joomla в браузер пользователя и обратно. 2/8 Создание собственных расширений В этой книге мы поговорим о создании модулей и компонентов. Создание плагинов, учитывая всю сложность этого процесса, выходит за рамки этой книги. Мы не будем рассматривать основы РНР, а весь материал в этой главе будет рассчитан на то, что вы полностью владеете этим языком программирования. Если это не так, в любом книжном магазине вы без проблем найдете книжку по РНР (в том числе и мою). Разработка модуля Структура модуля Модуль состоит как минимум из двух файлов: служебного XML-файла и файла кода (PHP-файл). Первый файл содержит всю информацию о модуле, а также инструкции относительно установки модуля в системе. Второй файл содержит непосредственно сам PHP-код модуля. Разработка служебного XML-файла Создайте каталог mod_mymodule. В него мы поместим оба файла нашего модуля. 3/8 Создание собственных расширений Первым делом нужно разработать XML-файл. В большинстве случаев он будет стандартным — вам нужно будет только изменять имя модуля и имя PHP-файла. В листинге 9.1 приведен типичный XML-файл модуля. Листинг 9.1. Файл mod_mymodule. xml <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <install type=&quot;module&quot; version=&quot;1.5.0&quot;> <name>My Module</name> <author>Denis Kolisnichenko</author> <copyright>(C) 2008 Denis Kolisnichenko</copyright> <creationDate>Oct 2008</creationDate> <authorEmail>dhsilabs@mail.ru</authorEmail> <authorUrl>www.dkws.org.ua</authorUrl> <description>My first module</description> <version>l.0.0</version> <files> 4/8 Создание собственных расширений <filename module=&quot;mod_mymodule&quot;>mod_mymodule .php</filename> </files> <params> <param name=&quot;your_name&quot; type=&quot;text&quot; default=&quot;Denis&quot; label=&quot;Your Name&quot; description=&quot;Your name&quot; /> </params> </install> Проанализируем содержимое XML-файла. Первая строка обязательна для всех XML-файлов. Вы можете разве что указать другую кодировку. Вторая строка говорит о том, что наше расширение — модуль (type=&quot;module&quot;) и для его установки нужна версия Joomla 1.5.0 или выше: <install type=&quot;module&quot; version=&quot;1.5.0&quot;> Далее следует стандартная информация о модуле: - название — name; разработчик — author; 156 Глава 9 дата создания — creationDate; информация об авторских правах — copyright; &quot;координаты&quot; автора — authorEmail, authorUrl; описание модуля — description; версия — version. Блок files описывает файлы модуля, у нас всего один файл: <files> <filename module=&quot;mod_mymodule&quot;>mod_mymodule .php</filename> </files> 5/8 Создание собственных расширений В блоке params описываются параметры модуля, которые можно будет изменить с помощью интерфейса администратора. Каждый параметр описывается с помощью тега param. Вам нужно указать следующие атрибуты этого тега: - name — имя параметра в сценарии; type — тип параметра (текст в данном случае); default — значение по умолчанию; label — подпись параметра в интерфейсе администратора; description — описание параметра (можно не указывать). Секцию <install> нужно обязательно закрыть: </install> Разработка РНР-файла Теперь можно приступить к созданию файла mod_mymodule.php — это главный файл модуля, содержащий его исходный код. Наш модуль будет предельно прост, но, тем не менее, он демонстрирует основные принципы создания модулей для Joomla. Модуль попросту будет выводить строку: Hello, <Имя>. Код нашего модуля представлен в листинге 9.2. ЛИСТИНГ 9.2. Код файла mod_mymodule.php <?php // прямой доступ запрещен 6/8 Создание собственных расширений defined( '_JEXEC ) or die ( 'Restricted access1 ) ; // получаем значение SUserName = $params->get('your_name', 0); // Выводим строку echo &quot;<strong>&quot; . JText::_('Hello, ') . SUserName . &quot;</strong>.&quot;; Создание собственных расширений 157 Теперь рассмотрим основные моменты нашего простого модуля. Если определена константа JEXEC, модуль выполняется вместе с Joomla, если же такой константы нет, значит, модуль запущен непосредственно (например, злоумышленником), и поэтому мы должны прервать выполнение такого РНР-кода. Получить значение параметров модуля, установленных в окне Менеджер модулей, можно с помощью метода get объекта $params: $UserName = $params->get('your_name', 0); 7/8 Создание собственных расширений Все, что нам осталось — это просто сделать вывод. Я рекомендую обычные фразы, например Send (Отправить), Save (Сохранить), выводить через статический класс Jtext: тогда Joomla автоматически переведет их на выбранный пользователем язык интерфейса. 8/8