Создание модуля для Joomla 2.5 и 3.


Создание модуля для для Joomla 2.5 и 3 значительно проще, чем создание компонента, который обычно реализует более сложную бизнес-логику. Обычно, стандартный модуль в Joomla представляет собой следующую структуру файлов:

mod_name (папка с файлами модуля, где name — это имя модуля):
— mod_name.xml (файл описания модуля в xml-формате)
— mod_name.php (основной файл модуля)
— helper.php (необязательный файл)
— index.html (пустой html-файл)
— tmpl (папка с шаблонами оформления вывода содержания блока)
— default.php (шаблон оформления по умолчанию)
— index.html (пустой html-файл)

Рассмотрим пример простейшего модуля «mod_news».

Пример содержания xml-файла mod_news.xml (необходимый файл, без которого вы не сможете установить модуль) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" method="install">
        <name>mod_news</name>
        <author>Andrew</author>
        <creationDate>18.03.2013</creationDate>
        <copyright>Copyright (C) 2013 All rights reserved.</copyright>
        <license>GNU General Public License</license>
        <authorEmail>admin@myemail.ru</authorEmail>
        <authorUrl>poleshuk.ru</authorUrl>
        <version>2.5.0</version>
        <description>MOD_NEWS_XML_DESCRIPTION</description>
        <files>
                <filename module="mod_news">mod_news.php</filename>
                <folder>tmpl</folder>
                <filename>index.html</filename>             
                <filename>mod_news.xml</filename>
                <filename>helper.php</filename>
        </files>
</extension>

Как видно из примера, сначала включается информация об авторе и версиях, затем — информация о файлах и папках, которые поставляются с модулем.

Пример содержания файла mod_news.php (основной файл модуля):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/**
 * здесь описание и комментарии
 */
defined('_JEXEC') or die;
 
// подключаем наш хелпер
require_once __DIR__ . '/helper.php';
 
//вызываем метод getNews(), который находится в хелпере 
//(извлекает из базы данных нужную нам информацию
$news = modNewsHelper::getNews();
 
//подключаем html-шаблон для вывода содержания модуля (шаблон default).
require JModuleHelper::getLayoutPath('mod_news', $params->get('layout', 'default'));

Пример хэлпера helper.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
defined('_JEXEC') or die;
 
class modNewsHelper
{
        public static function getNews()
        {
                //подключаемся к базе данных
                $app    = JFactory::getApplication();
                $db = JFactory::getDbo();
 
                //здесь какие-то действия и запросы к базе данных
                ...
                //возвращаем результат
                return $rows;
        }
}

Файл вывода содержимого нашего модуля default.php

1
2
3
4
5
6
7
<?php
defined('_JEXEC') or die;
?>
<?php foreach ($news as $item) : ?>
        <li><?php echo $item->title;?></li>
        <li><?php echo $item->data;?></li>
<?php endforeach; ?>
Другие посты

Категория: Joomla

Комментарии (7)

 

  1. Анатолий:

    Ну, а почему статья незакончена? Начало хорошее, а где остальные процентов 60 данной статьи с подробным описанием?

  2. admin:

    Не люблю лишнюю воду. Здесь рассмотрена основная структура модуля и содержание его компонентов. Если что-то осталось не ясным, спрашивайте — распишу подробнее.

  3. Влад:

    Спасибо!!! Очень помогло!

  4. Hishchnik:

    Возможно ли реализовать автоматическую проверку обновлений модуля?

  5. Александр:

    Здравствуйте! у меня вопрос по модулю «flymaps». Модуль отображает карту на сайте. Единственное, что он не имеет инструмент поиска по адресу. Добавить его удалось только в рабочее окно модуля в панели управления (там строка поиска отображается), а на карте самого сайта этой строки нет. Что делать? Подскажите пожалуйста!

  6. admin:

    Здравствуйте, Александр! К сожалению, с этим модулем не работал.

  7. Егор:

    Доброго времени суток. Подскажите пожалуйста как получить значение например из email

Оставить комментарий