Данная статья является логическим продолжением материала о том, как вставить 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. Если что-то пошло не так, можете скачать исходный код урока.