Отзывы с фриланса

(098)
258-76-54

Заказ звонка

Скидки

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

Попробуем создать собственный модуль для Joomla 1.7-2.5. Данный материал, предоставляет описание того, как конструируются модули. Желательно после изучения, рассмотреть действующие модули в качестве примера.

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

Например модуль будет называться mod_name. Его задача будет отобразить список пользователей, количество которых будет задаваться в административной панели управления модулем.

Архив с исходными файлами - Страница загрузки

Все модули Joomla имеют префикс mod_, после которого идет название модуля.

Минимальный набор файлов для полноценной работы модуля:

/modules/mod_name/index.html
/modules/mod_name/mod_name.php
/modules/mod_name/mod_name.xml
/modules/mod_name/helper.php
/modules/mod_name/tmpl/index.html
/modules/mod_name/tmpl/default.php
/languages/ru-RU/ru-RU.mod_name.ini

Данный модуль использует архитектуру MVC(Model, View, Controller — Модель, Представление, Контроллер).

Мы отделяем логику модуля(контроллер) в файл helper.php, чтобы вся работа с данными производилась только там.

Представление (View) - это шаблон который будет отображаться на web-странице, вынесем в папку tmpl/default.php. Сюда же помещяются изображения, стили.

 

Файл mod_name.php:

<?php
    defined('_JEXEC') or die('Restricted access');
    // Подключение файла helper.php
    require_once dirname(__FILE__).'/helper.php';
    // берем параметры из файла конфигурации
    $user_count = $params->get('usercount');
    // берем items из файла helper
    $items = ModMymodulHelper::getItems($user_count);
    // Эти параметры вводятся в административной панели в управлении модулем
    // И отвечает за показ количества пользователей
    $name_count = $params->get('name_count');
    // включение шаблона для отображения
    require(JModuleHelper::getLayoutPath('mod_name'));
?>

Основные этапы работы данного файла:
Мы включаем(include) файл helper.php, который будет работать с логикой модуля и данными.
После того, как мы получаем данные, мы просто загружаем шаблон, который использует наши данные и отображает их.

Файл mod_name.xml:

Будет содержать описание модуля и некоторые его настройки:

<?xml version="1.0" encoding="utf-8"?>
<extension
 type="module"
 version="2.5"
 client="site"
 method="upgrade">
    <name>Название модуля</name>
    <author>Имя автора</author>
    <!--Дата создания модуля-->
    <creationDate>2012-02-17</creationDate>
    <copyright>Копирайт</copyright>
    <!--Лицензия модуля-->
    <license>GPL 2.0</license>
    <!--e-mail автора-->
    <authorEmail>info(собака)info.com </authorEmail>
    <!--Сайт автора-->
    <authorUrl>www.site.com</authorUrl>
    <!--Версия модуля-->
    <version>1.0</version>
    <description>Описание модуля</description>
    <!--Описываем какие файлы присутствуют в модуле-->
    <!--Вместо тега filename можно вставить folder, т.е. папки которые есть в модуле, 
 что облегчает описание содержимого, потому что не нужно описывать каждый файл-->
    <files>
        <filename module="mod_name">mod_name.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <folder>tmpl</folder>
    </files>
    <!--Подключение языков-->
    <languages>
        <language tag="ru-RU">language/ru-RU/ru-RU.mod_name.ini</language> 
    </languages>
    <!--Параметры модуля, которые буду отображаться в административной панели, 
 на странице изменения параметров модуля-->
    <config> 
        <fields name="params">> 
            <fieldset name="basic"> <!--Основные параметры, буду описывать только их-->
<!-- 
 name="name_count" - имя параметра, который принимает файл mod_name
 type="text" - тип поля параметра
 label="MOD_NAME_COUNT" - имя метки параметра
 description="MOD_NAME_DESCRIPTION" - описание параметра, во всплывающей подсказке
 default="5" - значение по умолчанию
-->
                <field
 name="name_count"
 type="text"
 label="MOD_NAME_COUNT"
 description="MOD_NAME_DESCRIPTION"
 default="5" 
 />
            </fieldset>
        </fields>      
    </config>
</extension>

 

Файл helper.php

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

<?php
//Защита от прямого обращения к файлу
defined('_JEXEC') or die('Restricted access');
//Класс через который работают файлы
class ModMymodulHelper{
    public function getItems($userCount){
//Подключение к бд joomla
        $db = JFactory::getDBO();
//Выбираем из какой таблицы будем вытаскивать данные
        $query = 'SELECT * FROM #__users';
        $db->setQuery($query);
        $items = $db->loadObjectlist();
return $items;
    } 
}
?>

Что нужно еще заметить, некоторые разработчики не помещают ничего в файл helper.php, оставляя только код ограничения доступа, передавая параметры из mod_name.php в default.php.

 

Файл default.php:

И наконец, чтобы все это отображалось мы создаем файл tmpl/default.php. Это файл отображает все в виде html

<?php 
defined('_JEXEC') or die('Restricted access');
$i=1;
// Вывод текста из языкового файла
echo JText::_('MOD_NAME_USERS').": <hr />";
    foreach ($items as $item ){ 
// $name_count - выводит количество пользователей, заданное в административной панели
        if ($i <= $name_count){
            echo $item->name.'<br>'; 
        }
        $i++;
    } 
?>

 

Файл ru-RU.mod_name.ini

Языковый файл для возможности создания многоязычных сайтов

MOD_NAME_USERS = "Список пользователей"
MOD_NAME_COUNT = "Количество пользователей"
MOD_NAME_DESCRIPTION = "Укажите количество пользователей которые будут отображаться"

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

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