Как написать свой модуль для joomla

Как написать свой модуль для joomla

Модули намного проще компонентов, модуль в джумле это обычно один php файл, выполняющий небольшую работу по отображению информации, например по выводу заголовков самых читаемых статей. В джумле 1.7 есть стандартный модуль позволяющий из административного интерфейса заполнить себя кодом html или php – очень удобно для мелких модулей, например так можно быстро разместить код счётчика на сайт.

Обычно они не имеют административного интерфейса, но время от времени принимают параметры. Модули полностью связаны с презентацией на вашем веб-сайте и интегрированы в ваш шаблон. Обычно модули прикрепляются к существующим компонентам, предполагается, что необходимые таблицы и контент уже существуют и могут использоваться.

Для того чтобы запрограммировать собственный модуль, понадобится два файла.

Один — для логики и презентации, а другой — XML файл для инсталлятора Joomla!.

Имена обоих файлов начинаются с метки mod_.

Исходный код

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

Вот их файлы:

• mod_auto. php

• helper. php

• tmpl/default. php

• mod_auto. xml

Рассмотрим эти файлы вместе с остальными.

Точка входа (mod_auto. php)

Файл mod auto. php — это управляющий файл для модуля.

Mod_auto. php:

<?php defined!('_JEXEC) or die('Restricted access'); require_once (dirname(_FILE_).DS.'helper. php');

$auto = modAutoHelper::getAuto($params); require(JModuleHeiper::getLayoutPath('mod_auto'));

?>

В этой точке интегрируется класс helper, а не базовый контроллер.

Класс helper (helper. php)

Класс helper комбинирует в себе контроллер и модель.

Helper. php:

<?php defined!('_JEXEC ) or die( 'Restricted access' ); class modAutoHelper

{ function getAuto(&$params)

{ global $mainframe;

3db =& JFactory: rgetDBO();

$query = "SELECT *"

. "\n FROM #_auto"

. "\n WHERE published =1"

. "\n LIMIT 0,5"

;

$db_>setQuery ( $query );

$rows = $db_>loadObjectList();;

$auto = "<ul>\n"; if ($rows) { foreach ($rows as $row) {

$auto.= " <li>". $row_>text. "</'li>\n";

}

}

Sauto.= "</ul>\n"; return $auto;

}

}

?>

В классе helper запрос строк данных происходит после всего остального в цикле for.

Шаблон (tmpl/default. php)

В этой достаточно простой конструкции переменная $auto хранит вывод класса helper. Можно было бы также просто выполнить цикл for из класса helper и оказать большее влияние на код HTML, подлежащий выводу, и таким образом позволить дизайнеру шаблона переписать исходный код.

Tmpl/default. php: defined( '_JEXEC ) or die( 'Restricted access' ); ?>

<?php echo $auto; ?>

Файл mod_auto. xml

Для инсталляции модуля понадобятся все необходимые данные для инсталлятора Joomla! в виде XML файла (как и в случае компонента).

Mod_auto. xml:

<?xml version="l. О" encoding="utf_8"?>

<install type="module" version="l.5.0">

<name>Auto</name>

<author>Hagen Graf</author>

<creationDate>November 2007</creationDate>

<copyright>(C) 2007 cocoate. com All rights reserved.</copyright>

<license>GNU/GPL</license>

<authorEmail>hagen. grafSgmail. com</authorEmail>

<authorUrl>www. cocoate. com</authorUrl>

<version>0.1</version>

<description>Auto Module</description>

<files>

<filename module="mod_auto">mod_auto. php</filename>

<filename>index. html</filename>

<filename>helper. php</filename>

<filename>tmpl/default. php</filename>

<filename>tmpl/index. html/filename>

</files>

</install>

Установка

Скопируйте все файлы в подкаталог и упакуйте этот каталог в ZIP пакет по имени mod_auto. zip. Как обычно, вы сможете затем инсталлировать этот пакет инсталлятором Joomla! и при желании позволить другим загружать его себе. Прежде чем приступить к инсталляции у себя, воспользуйтесь инсталлятором Joomla! для деинсталляции версии, установленной вами вручную. Для этого щелкните на Extensions/Install/Uninstall, отметьте компонент и щелкните на пиктограмме Uninstall.

После инсталляции вы должны будете активизировать модуль через меню

Extensions/Module Manager (Расширения/Диспетчер модулей).

Представление на веб-сайте

Теперь вы можете видеть элементы из таблицы jos_auto в выбранной позиции.


Карта сайта


Информационный сайт Webavtocat.ru