Мысли вслух
Что нужно знать, чтобы создать модуль для Joomla 1.5 Печать
Добавил Administrator   
Пятница, 20 Август 2010

В этой статье записал самые основные моменты в создании модуля. Какая структура и схема работы файлов в модуле. Какие и главное, куда должны перемещаться данные и т.д.

Приступим.
В 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>



Скачать установочный архив модуля, код которого приведен выше можно здесь.

На этом все. Удачи.

 

Комментарии  

 
#1 Bassboost 28.08.2010 18:16
а можете показать как сделать своем шаблоне постраничную навигацию 1 2 3 и т.д.?
а то у меня даже стандартное не подключается почему-то
Цитировать
 
 
#2 SDemon 31.08.2010 09:35
А причем здесь шаблон?
В шаблоне можно интегрировать собственное меню, но это не обязательная опция шаблона.
В шаблоне указываете только позицию для модуля (смотрите статью 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", который отвечает за вывод меню на сайте.
Цитировать
 
 
+1 #3 LED 15.02.2011 21:32
Радует количество каментов, за это много плюсов) Жаль только что они слишком уж тусклые
Цитировать
 
 
+1 #4 02.06.2011 20:37
Спасибо, очень полезная статья.
Цитировать
 
 
#5 KoT 09.07.2011 17:55
Все статьи прекрасны! Побольше бы их.
Цитировать
 
 
#6 Александр Ошаров 05.08.2011 21:38
Есть такая проблема:
Копируем исходный код страницы http://www.pointfitness.ru. Удаляем весь лишний код кроме lava menu из за которого весь сыр бор (верхнее меню)! Остается у нас HTML файл+css+js. Теперь внимание вопрос как это все интегрировать в модуль. Я уже всё перерыл как из html сделать этот долбаный php если я его совсем не знаю
Цитировать
 
 
#7 Константин 23.09.2011 10:07
Вы забыли написать про файлы index.html которые в целях безопасности надо положить во все папки модуля.
Цитировать
 
 
#8 Сергей 13.10.2011 17:00
Здравствуйте.
Возник вопрос, где правильно подключить CSS?
Логично в default.php но всёже.
Зароанее благодарен.
Цитировать
 
 
#9 AmuraGaryGync 22.12.2011 09:42
Who do you like, Real or Barcelona?
Цитировать
 
 
#10 Trakilosha 18.05.2012 12:29
Обучение в Институте Юрия Мороза - очень хорошая проверка, чего ты стоишь. Он учит ценить время, показывает, как мы его бездарно сливаем. Оно того стоит. Не сомневайтесь!

Институт Юрия Мороза не только учит бизнесу, но и помогает улучшать и другие стороны своей жизни.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Хостинг «Джино»
SmartResponder