|
В этой статье записал самые основные моменты в создании модуля. Какая структура и схема работы файлов в модуле. Какие и главное, куда должны перемещаться данные и т.д.
Приступим. В Joomla 1.5 принято писать приложения по стандарту Модель-Вид-Контроллер (MVC). Для модулей данная система работает в упрощенном варианте, но все равно будем называть эту систему – MVC (В модуле, как правило, нет Контроллера, т.к. любая обработка данных подвластна только Компонентам).
Итак, создаем четыре файла (префикс mod_ обязательно ставить везде где я его пишу): mod_название модуля.php – основной файл модуля, который подключает и направляет Joomla 1.5 по нужному пути. mod_ название модуля.xml – основной файл настроек, он же является файлом установщиком модуля в среду Joomla 1.5. helper.php – содержит программную начинку модуля, т.е. оперирует данными, считывает, обрабатывает, сортирует и т.д. (условно можно отнести к Модели). tmpl/default.php – этот файл отвечает за вывод данных, т.е. собственно то для чего модуль и создавался, показать какую-то информацию (условно можно отнести к Виду).
Все эти файлы должны храниться в папке mod_название модуля.
Чтобы модуль установился в систему и с ним можно было начать работу, нужно отредактировать файл mod_ название модуля.xml: <?xml version="1.0" encoding="utf-8"?> <install type="module" version="1.5.0"> <name>Название модуля</name> <author>Автор</author> <creationDate>Дата создания</creationDate> <copyright>Копирайт</copyright> <license>Тип лицензии</license> <authorEmail>email автора</authorEmail> <authorUrl>сайт автора</authorUrl> <version>версия модуля</version> <description>Описание модуля</description>
<!-- Перечисляем файлы модуля, которые должны скопироваться в Joomla 1.5-->
<files>
   <filename module="mod_название модуля">mod_название модуля.php</filename>
   <filename>mod_ название модуля.xml</filename>
 <filename>helper.php</filename>
   <filename>tmpl/default.php</filename>
 </files> </install>
Все модуль готов к установке. Выделяем все созданные файлы и создаем архив zip с любым именем.
Устанавливаем в Joomla 1.5 через ее установщик и приступаем к работе.
Если установка прошла успешно, то можно приступить к написанию кода модуля. (Если Joomla 1.5 установлена на удаленном сервере, то воспользуйтесь программой доступа по ftp соединению.)
В директории с установленной Joomla 1.5 находим папку modules и в ней ищем папку mod_ Название модуля, открываем ее и видим четыре ранее созданных файла. Все они пустые, кроме файла mod_ название модуля.xml.
Открываем файл mod_название модуля.php и записываем следующий код: <?php defined('_JEXEC') or die('Restricted access'); /* Защита от прямого доступа к файлу */
require_once(dirname(__FILE__).DS.'helper.php'); /* Подключение файла helper.php */
$имя переменной = ModJ название класса Helper::get название функции с большой буквы (передаваемые параметры); /* Создаваемая переменная будет являться классом в файле helper.php. Запись оригинальная со множеством обязательных символов, вот пример как она должна выгдядеть: $namevariable = ModJnameclassHelper::getNamefunction($params); где: $namevariable – имя переменной; nameclass – название класса; Namefunction – название функции; $params – переменная, которая является глобальной и которая содержит в себе данные из параметра модуля, которые задаются в файле mod_ название модуля.xml. */
require(JModuleHelper::getLayoutPath('mod_название модуля')); /* В этой строке подключается файл вывода данных tmpl/default.php */ ?>
По сути файл mod_название модуля.php только управляет и направляет данные по модулю. В данном примере был подключен файл helper.php, создан для него один класс с одним параметром и в конце подключен файл tmpl/default.php для вывода данных на экран.
Теперь давайте займемся файлом helper.php, в нем будет содержаться программная начинка модуля, которая заключена в классы и функции: <?php /* Итак, для начала защитим файл от прямого доступа */ defined('_JEXEC') or die('Restricted access');
/* Теперь создадим класс с названием, которое записали в файле mod_название модуля.php (в примере оно было записано так: ModJnameclassHelper)*/ class ModJ название класса Helper {
/* Теперь запишем основную функцию с названием, которое задали в файле mod_название модуля.php (в примере оно было записано так: getNamefunction($params))*/
function get название функции с большой буквы (передаваемые параметры)
{
/*Тело функции, любой код и все, что необходимо пишем здесь. Для того чтобы обратиться к параметру функции (в нашем случае $params), нужно записать такую команду: $params->get('имя параметра'). Такая запись будет иметь значение параметра которое задано в настройке (администрировании) модуля под соответствующим именем.
О том какие глобальные параметры еще могут передаваться в модуле поговорим в другой статье, сейчас объясняю только механизм работы.
Главное, что нужно не забыть это в конце функции вернуть нужное значение или массив данных или просто true или false.
Все условия и обработка должны находиться в теле этой функции. Можно создавать дополнительные функции как в теле этой так и вне ее и класса, но результат для передачи в Вид, должен находиться в теле этой функции*/
return нужное значение;
} } ?>
Как написать код тела функции это тема для отдельной статьи, в этой приведена основа рабочих узлов в модуле для Joomla 1.5.
Итак, все что осталось, это написать код для вывода информации на экран. Открываем файл tmpl/default.php и создаем визуальное тело модуля, т.е. верстку и т.д.
Для того чтобы вывести на экран значения полученные в файле helper.php нужно обратиться к переменной, которую создавали в файле mod_название модуля.php (в нашем примере $namevariable). Синтаксис такого обращения выглядит так: $namevariable->полученное значение; или просто $namevariable; Если полученное значение массив, то тогда сначала нужно разложить массив и потом применять такую запись. Если полученное значение просто true или false, то тогда можно просто работать с этой переменной как со значением 1 и 0 соответственно.
Вот и весь основной механизм работы модуля, понимаю что без примера очень тяжело понять, поэтому вот код для примера всех четырех файлов:
Модуль называется mod_example:
1. Код файла mod_example.php: <?php defined('_JEXEC') or die('Ошибка!!! Файл вызван вне тела Joomla 1.5');
/* Подключаем файл helper.php */ require_once(dirname(__FILE__).DS.'helper.php');
/* Создаем переменную для класса в файле helper.php */ $namevariable = ModJnameclassHelper::getNamefunction($params);
/* Подключаем файл вывода модуля на экран tmpl/default.php */ require(JModuleHelper::getLayoutPath('mod_example ')); ?>
2. Код файла mod_example.xml: <?xml version="1.0" encoding="utf-8"?> <install type="module" version="1.5.0"> <name>Example</name> <author>SDemon</author> <creationDate>20.08.2010</creationDate> <copyright>2010</copyright> <license>GPL</license> <authorEmail>
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
</authorEmail> <authorUrl>sdemon.ru</authorUrl> <version>0.0.1</version> <description>Образец структурной работы модуля. В файлах описаны основные механизмы работы.</description> <!-- Перечисляем файлы модуля, которые должны скопироваться в Joomla 1.5-->
 <files>
   <filename module="mod_example">mod_example.php</filename>
   <filename>mod_example.xml</filename>
  <filename>helper.php</filename>
   <filename>tmpl/default.php</filename>
 </files> <!-- Задаем параметры для модуля -->
 <params>
   <param name="paramname" type="text" size="80" default="" label="Введите Ваше имя" description="Укажите Ваше имя для проверки работы модуля. Введенное имя будет отображаться на сайте" />
</params> </install>
3. Код файла helper.php: <?php defined('_JEXEC') or die('Ошибка!!! Файл вызван вне тела Joomla 1.5');
/* Создаем класс */ class ModJnameclassHelper {
/* Создаем функцию */
function getNamefunction($params)
{ /* Тело нашей функции */ /* Вызываем параметр из настроек модуля под именем paramname */ $youname = $params->get('paramname'); /* Занесли это значение в переменную $youname и проверяем пустое оно или нет */ if($youname) { /* Если имя введено, то переменная $view содержит имя */ $view = $youname; } else { /* Если имя не введено, то $view содержит следующую фразу */ $view = 'Ошибка! Вы не ввели свое имя.'; } /* Функция имеет результат со значением в переменной $view */ return $view;
} } ?>
4. Код файла tmpl/default.php: <?php defined('_JEXEC') or die('Ошибка!!! Файл вызван вне тела Joomla 1.5'); ?> <!--Выводим в блоке с классом example значение полученное в файле helper.php--> <div class="example"> <!--Так как у нас переменная $view из файла helper.php содержит одно значение, то и переменная $namevariable из файла mod_example.php тоже будет содержать одно значение, следовательно просто выведем ее и все--> Ваше имя: <?php echo $namevariable; ?> </div>
Скачать установочный архив модуля, код которого приведен выше можно здесь.
На этом все. Удачи.
|
Комментарии
а то у меня даже стандартное не подключается почему-то
В шаблоне можно интегрировать собственное меню, но это не обязательная опция шаблона.
В шаблоне указываете только позицию для модуля (смотрите статью sdemon.ru/index.php?option=com_content&view=article&id=57:indexphp-template&catid=38:2010-07-05-19-11-28&Itemid=60) и потом в эту позицию выводите отображение модуля "mod_mainmenu", который отвечает за вывод меню на сайте.
Копируем исходный код страницы http://www.pointfitness.ru. Удаляем весь лишний код кроме lava menu из за которого весь сыр бор (верхнее меню)! Остается у нас HTML файл+css+js. Теперь внимание вопрос как это все интегрировать в модуль. Я уже всё перерыл как из html сделать этот долбаный php если я его совсем не знаю
Возник вопрос, где правильно подключить CSS?
Логично в default.php но всёже.
Зароанее благодарен.
Институт Юрия Мороза не только учит бизнесу, но и помогает улучшать и другие стороны своей жизни.