Создание модуля Joomla часть 2

Создание модуля часть 2

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

В первой части разработки модулей для Joomla был продемонстрирован простой модуль, который практически ничего не делал. Теперь сделаем более сложный модуль с использованием MVC. Второй модуль будет называться "mod_hellopeoples", который должен будет содержать следующие файлы:

  • /modules/mod_hellopeoples/index.html
  • /modules/mod_hellopeoples/mod_hellopeoples.php
  • /modules/mod_hellopeoples/mod_hellopeoples.xml
  • /modules/mod_hellopeoples/helper.php
  • /modules/mod_hellopeoples/en-GB.mod_hellopeoples.ini
  • /modules/mod_hellopeoples/ru-RU.mod_hellopeoples.ini
  • /modules/mod_hellopeoples/tmpl/index.html
  • /modules/mod_hellopeoples/tmpl/default.php

Появилось 4 новых файлов: helper.php, tmpl/default.php, en-GB.mod_hellopeoples.ini и ru-RU.mod_hellopeoples.ini. Цель в добавлении первых двух файлов является двоякой.

Во-первых вся логика и доступ к БД будет осуществляться в новым файле helper.php. Во-вторых появится шаблон вывода информации  (/tmpl/default.php). Такое разделение очень полезно, так как не затрагивая логику, можно будет очень легко переделывать шаблон под свой Joomla сайт.

/modules/mod_hellopeoples/mod_hellopeoples.php содержит следующие строки:

<?php
//no direct access
defined('_JEXEC') or die('Direct Access to this location is not allowed.');

// подключаем helper.php
require_once(dirname(__FILE__).DS.'helper.php');

// берем параметры из файла конфигурации
$userCount = $params->get('usercount');

// берем items из файла helper.php
$items = ModHelloWorld2Helper::getItems($userCount);

// подключаем шаблон для отображения
require(JModuleHelper::getLayoutPath('mod_hellopeoples'));

Важное отличие здесь является в том что мы подключаем вспомогательный файл helper.php, который будет "рабочим конем" для нашего Joomla модуля. Вся логика и работа с данными будет происходит в нем, затем будут передаваться в шаблон вывода, который будет использовать данные по своему усмотрению.

/modules/mod_hellopeoples/mod_hellopeoples.xml содержит следующие строки:

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<!--Название модуля -->
<name>Hello Peoples</name>

<!-- Имя автора -->
<author>Oleg Nipons</author>

<!--Дата создания модуля -->
<creationDate>2012-01-25</creationDate>

<!-- Копирайт -->
<copyright>All rights reserved</copyright>

<!-- Лицензия -->
<license>GPL 2.0</license>

<!-- Email автора модуля-->
<authorEmail>nnipons@mail.ru</authorEmail>

<!-- Сайт автора -->
<authorUrl>http://nipons.ru</authorUrl>

<!-- Версия модуля -->
<version>1.0</version>

<!-- Описание модуля -->
<description>Модуль отображает список случайных зарегистрированных
 пользователей сайта</description>

<!-- Списо всех файлов которые буду установлены -->
<files>
<!-- "module" означает, что это основной файл контроллера -->
<filename module="mod_hellopeoples">mod_hellopeoples.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>

<languages>
<!-- Any language files included with the module -->
<language tag="en-GB">en-GB.mod_hellopeoples.ini</language>
<language tag="ru-RU">ru-RU.mod_hellopeoples.ini</language>
</languages>

<!-- Дополнительные параметры -->
<params>
<!-- параметр, чтобы размещать суффикс класса модуля для таблицы/xhtml отображать -->
<param name="moduleclass_sfx" type="text" default="" label="Module Class Suffix"
description="PARAMMODULECLASSSUFFIX" />

<!-- просто дает нам малое места между предыдущим параметров и следующим -->
<param name="@spacer" type="spacer" default="" label="" description="" />

<!-- Параметр, который позволяет администратору изменять количество пользователей
 которые будут отображаться-->
<param name="usercount" type="text" default="5" label="LABEL USER COUNT"
description="DESC USER COUNT" />
</params>
</install>

Основные отличия в том, что добавилась ссылка на файл локализации и добавились некоторые незнакомые нам параметры.

/modules/mod_hellopeoples/helper.php содержит следующие строки:

<?php
defined('_JEXEC') or die('Direct Access to this location is not allowed.');

class ModHelloPeoplesHelper
{
/**
* Returns a list of post items
*/
public function getItems($userCount)
{
// подключаемся к БД
$db = &JFactory::getDBO();

// берем список случайных зарегестрированных пользователей ограниченных
переменной $userCount
$query = 'SELECT a.name FROM `#__users` AS a ORDER BY rand() LIMIT ' . $userCount  . '';

$db->setQuery($query);
$items = ($items = $db->loadObjectList())?$items:array();

return $items;
} //конец функции getItems

} //end SimplestForumLatestPostsHelper

Этот вспомогательный класс (заметьте он называется так же как называется модуль) просто возвращает список случайных (random) пользователей, ограниченный количеством $userCount.

/modules/mod_hellopeoples/tmpl/default.php содержит следующие строки:

<?php defined('_JEXEC') or die('Restricted access'); // no direct access ?>
<?php echo JText::_('RANDOM USERS'); ?>
<ul>
<?php foreach ($items as $item) { ?>
<li>
<?php echo JText::sprintf('USER LABEL', $item->name); ?>
</li>
<?php } ?>
</ul>

Тут просто с помощью цикла выводится список имен пользователей, полученных от нашего файла помощника (helper.php).

/modules/mod_hellopeoples/en-GB.mod_hellopeoples.ini:

LABEL USER COUNT=User count
DESC USER COUNT=Number of users
RANDOM USERS=Random users for mod_hellopeoples
USER LABEL=%s is a random list of users

/modules/mod_hellopeoples/ru-RU.mod_hellopeoples.ini:

LABEL USER COUNT=Счетчик отображаемых пользователей
DESC USER COUNT=Количество пользователей
RANDOM USERS=Случайные пользователи для mod_hellopeoples
USER LABEL=%s это случайный пользователь

Здесь мы просто идентифицируем строчки, которые появляются в файле конфигурации модуля и в шаблоне модуля (операторы JText:: _ или JText:: sprintf). Это позволяет легко перевести модуль Joomla на любой язык.

Создание модуля часть 2

Создание модуля часть 2

Создание модуля часть 2

Скачать mod_hellopeoples.zip

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


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

MOD_BREADCRUMBS_HERE Главная страницаJoomlaСоздание модуля Joomla часть 2
?>