В сети есть много примеров создания модуля Hello World, но это зачастую не является главной целью для человека впервые захотевшего сделать свой модуль. Обычно задача его состоит в том чтобы вывести какие то данные из БД, которые не были предусмотрены обычными стандартными модулями Joomla.
Для этого создадим каталог и положим туда любой файл index.html ( находящийся в любой папке любого модуля Joomla ), чтобы избежать прямого попадания в директорию. Если вы не хотите мучаться с установкой его, а Joomla есть у вас на локалхосте, то можете создать папку вашего модуля сразу в папке modules, после создания всех файликов, сможете сразу зайти в админку, в панель управления модулями, кликнуть «создать» и он будет отображен в списке и готов к включению…
Например модуль будет называться mod_my. Его задача будет отобразить список юзеров из БД и ограничить его количеством заданным собственноручно из админки в управление данным модулем.
Минимальный набор файлов для полноценной работы модуля:
/modules/mod_my/index.html
/modules/mod_my/mod_my.php
/modules/mod_my/mod_my.xml
/modules/mod_my/helper.php
/modules/mod_my/tmpl/index.html
/modules/mod_my/tmpl/default.php
Данный модуль использует архитектуру MVC(Model, View, Controller — Модель, Представление, Контроллер).
Во-первых, мы отделяем логику модуля(контроллер) в файл helper.php, чтобы вся работа с данными производилась только там. Представление(View)/шаблон, (X)HTML же мы вынесем в tmpl/default.php. Это хороший стиль программирования — отделять логику от представления.
Теперь приступим к созданию файлов. Начнем с файла mod_my.php
Основные этапы работы данного файла:
Следующий файл, mod_my.xml, будет содержать описание модуля и некоторые его настройки:
Сам же helper.php, будет содержать непосредственно код запроса:
Он просто получает список пользователей из БД и случайным образом заполняет массив подмножеством пользователей, размерность которого задана через параметр модуля и передаётся в метод getItems через параметр $userCount.
И наконец, чтобы все это отображалось простейшим списком, мы создаем файлик tmpl/default.php
В итоге мы получаем полностью рабочий модуль, простейшего содержания, но имеющий подключение к БД и пример его реализации! Далее вы конечно можете его заархивировать в ZIP и он будет готов к установке в любую joomla 1.5
Для этого создадим каталог и положим туда любой файл index.html ( находящийся в любой папке любого модуля Joomla ), чтобы избежать прямого попадания в директорию. Если вы не хотите мучаться с установкой его, а Joomla есть у вас на локалхосте, то можете создать папку вашего модуля сразу в папке modules, после создания всех файликов, сможете сразу зайти в админку, в панель управления модулями, кликнуть «создать» и он будет отображен в списке и готов к включению…
Например модуль будет называться mod_my. Его задача будет отобразить список юзеров из БД и ограничить его количеством заданным собственноручно из админки в управление данным модулем.
Минимальный набор файлов для полноценной работы модуля:
/modules/mod_my/index.html
/modules/mod_my/mod_my.php
/modules/mod_my/mod_my.xml
/modules/mod_my/helper.php
/modules/mod_my/tmpl/index.html
/modules/mod_my/tmpl/default.php
Данный модуль использует архитектуру MVC(Model, View, Controller — Модель, Представление, Контроллер).
Во-первых, мы отделяем логику модуля(контроллер) в файл helper.php, чтобы вся работа с данными производилась только там. Представление(View)/шаблон, (X)HTML же мы вынесем в tmpl/default.php. Это хороший стиль программирования — отделять логику от представления.
Теперь приступим к созданию файлов. Начнем с файла mod_my.php
<?php
//no direct access
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
// include the helper file
require_once(dirname(__FILE__).DS.'helper.php');
// get a parameter from the module's configuration
$userCount = $params->get('usercount');
// get the items to display from the helper
$items = ModMyHelper::getItems($userCount);
// include the template for display
require(JModuleHelper::getLayoutPath('mod_my'));
?>
Основные этапы работы данного файла:
- Мы включаем(include) файл helper.php, который будет нашей рабочей лошадкой при работе с логикой модуля и данными.
- После того, как мы получаем данные, мы просто загружаем шаблон, который использует наши данные и отображает их.
Следующий файл, mod_my.xml, будет содержать описание модуля и некоторые его настройки:
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<!-- Name of the Module -->
<name>Мой модуль</name>
<!-- Name of the Author -->
<author>Nick</author>
<!-- Version Date of the Module -->
<creationDate>2009-03-30</creationDate>
<!-- Copyright information -->
<copyright>Копирайт</copyright>
<!-- License Information -->
<license>GPL 2.0</license>
<!-- Author's email address -->
<authorEmail>info@info.com</authorEmail>
<!-- Author's website -->
<authorUrl>www..com</authorUrl>
<!-- Module version number -->
<version>1.0.0</version>
<!-- Description of what the module does -->
<description>Всякая </description>
<!-- Listing of all files that should be installed for the module to function -->
<files>
<!-- The "module" attribute signifies that this is the main controller file -->
<filename module="mod_my">mod_my.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>
<!-- Optional parameters -->
<params>
<!-- parameter to allow placement of a module class suffix for the module table / xhtml display -->
<param name="moduleclass_sfx" type="text" default="" label="Module Class Suffix" description="PARAMMODULECLASSSUFFIX" />
<!-- just gives us a little room between the previous paramter and the next -->
<param name="@spacer" type="spacer" default="" label="" description="" />
<!-- A parameter that allows an administrator to modify the number of users that this module will display -->
<param name="usercount" type="text" default="5" label="Число юзеров" description="Укажите число юзеров" />
</params>
</install>
Сам же helper.php, будет содержать непосредственно код запроса:
<?php
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
class ModMyHelper
{
/**
* Returns a list of post items
*/
public function getItems($userCount)
{
// get a reference to the database
$db = &JFactory::getDBO();
// get a list of $userCount randomly ordered users
$query = 'SELECT a.name FROM `#__users` AS a LIMIT ' . $userCount . '';
$db->setQuery($query);
$items = ($items = $db->loadObjectList())?$items:array();
return $items;
} //end getItems
} //end SimplestForumLatestPostsHelper
?>
Он просто получает список пользователей из БД и случайным образом заполняет массив подмножеством пользователей, размерность которого задана через параметр модуля и передаётся в метод getItems через параметр $userCount.
И наконец, чтобы все это отображалось простейшим списком, мы создаем файлик tmpl/default.php
<?php defined('_JEXEC') or die('Restricted access'); // no direct access ?>
<ul>
<?php foreach ($items as $item) { ?>
<li>
<?php echo $item->name; ?>
</li>
<?php } ?>
</ul>
В итоге мы получаем полностью рабочий модуль, простейшего содержания, но имеющий подключение к БД и пример его реализации! Далее вы конечно можете его заархивировать в ZIP и он будет готов к установке в любую joomla 1.5