Данная статья является логическим продолжением материала о том, как вставить PHP в Joomla.
Также смотрите материал, посвященный разработке плагина для Joomla 3.
Как говорилось ранее, наиболее грамотный способ использования PHP в Joomla — создание модулей, плагинов или компонентов. Думаю, что эти слова уже знакомы читателю и принципиальная разница между ними ясна.
Для начала подробнее рассмотрим модули и плагины (с компонентами всё несколько сложнее).
Модуль | Плагин | |
---|---|---|
Варианты размещения | В блоках В материале |
В материале (в блоках, если внутри модуля) |
Может изменять содержимое материала или заголовков | Нет | Да |
Может принимать параметры через адресную строку | Да | Да |
Может принимать параметры непосредственно из материала для каждого вхождения в материал(в каждом контексте вызова) | Нет | Да |
Имеет доступ к базе данных и документу | Да | Да |
Можно поставить ajax-обработчик | Да, в этом же модуле через функцию onAjax() в хелпере модуля | Да, как для плагина из группы content, так и для плагина чисто под ajax из группы ajax через функцию onAjaxИмяПлагина() |
Создадим модуль, который будет выводить сегодняшнюю дату
Установочный файл модуля представляет собой zip-архив, включающий как минимум 2 обязательных файла: mod_myModule.php и mod_myModule.xml. В первом содержится php-код, во втором — версии, копирайты, директивы установки и поля настроек (опционально). Оба файла должны иметь одинаковое название, соответствующее названию модуля.
Рассмотрим xml-файл нашего будущего модуля:
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="2.5.0" method="upgrade"> <!-- Указываем тип расширения - module. method="upgrade" означает, что при повторной установке модуль обновится. --> <name>mod_myModule</name> <creationDate>September 2014</creationDate> <author>Stanislav Pichugin</author> <authorEmail></authorEmail> <authorUrl>http://way-on-top.ru</authorUrl> <copyright>Way On Top</copyright> <license>Way On Top</license> <version>0.0.1</version> <description>Модуль выводит текущую дату.</description> <!-- Краткое описание модуля --> <files> <filename module="mod_myModule">mod_myModule.php</filename> <!-- Здесь перечисляем все файлы, которые лежат в архиве. В том числе пустой index.html --> <filename module="mod_myModule">mod_myModule.xml</filename> <filename module="mod_myModule">index.html</filename> </files> </extension>
В файл кода mod_myModule.php пропишем защитную строчку, запрещающую прямой доступ к php-файлу, и нашу функцию вывода текущей даты.
<? defined('_JEXEC') or die('Restricted access'); //Если константа _JEXEC не определена - выходим $date = date("Y-m-d H:i:s"); echo "Сегодня у нас $date"; ?>
Записываем все файлы в папку mod_myModule, архивируем в zip и устанавливаем на сайт.
Пробуем что получилось: в материале пишем {loadmodule mod_myModule} и наслаждаемся результатом! :)
Либо устанавливаем его в позицию, предопределенную шаблоном.
Обратите внимание, что префикс mod_ является обязательным и его отсутствие приведет к тому, что модуль просто не определится системой.
P.S. Если что-то пошло не так, можете скачать исходный код урока.