Оригинал статьиОригинал статьи (английский)
http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,modules:hello_world/Сама статья укороченная, не стал писать вводные тексты, а только то, что мне кажется важным.
Файловая структура:В основном используется четыре файла для написания модулей:
- mod_helloworld.php — это главный файл для модуля. Используется для инициации, вызова помощника для сбора различных данных, загрузка темплея, который выводит результат работы.
- mod_helloworld.xml — этот файл содержит информацию о модуле. Он определяет файлы, которые нужны для инсталяции и специфические настройки модуля.
- helper.php — этот файл содержит класс-помощник, который собирает всю информацию (обычно из базы данных или других мест)
- tmpl/default.php — это темплей модуля. Он показывает все собранные данные и генерирует ХТМЛь, в нужном виде.
Создаём mod_helloworld.phpmod_helloworld.php выполняет три функции:
- загружает helper.php
- вызывает нужные методы класса-помошника
- загружает файл темплея.
<?php
/**
* Hello World! Module Entry Point
*
* @package Joomla.Tutorials
* @subpackage Modules
* @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
* @license GNU/GPL, see LICENSE.php
* mod_helloworld is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
// zawita ot prjamogo dostupa
defined( '_JEXEC' ) or die( 'Restricted access' );
// tol'ko odin raz zagruzit' fajl s klassom-pomownikom
require_once( dirname(__FILE__).DS.'helper.php' );
// vypolnit' metod getHello() klassa-pomownika modHelloWorldHelper
$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
?>
Создание helper.php<?php
/**
* Helper class for Hello World! module
*
* @package Joomla.Tutorials
* @subpackage Modules
* @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
* @license GNU/GPL, see LICENSE.php
* mod_helloworld is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
// zawita ot prjamogo dostupa
defined( '_JEXEC' ) or die( 'Restricted access' );
class modHelloWorldHelper
{
/**
* Retrieves the hello message
*
* @param array $params An object containing the module parameters
* @access public
*/
function getHello( $params )
{
return 'Hello, World!';
}
}
?>
Создание tmpl/default.php<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php echo $hello; ?>
Создание mod_helloworld.xml<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Hello, World!</name>
<author>John Doe</author>
<version>1.5.1</version>
<description>A simple Hello, World! module.</description>
<files>
<filename module="mod_helloworld">mod_helloworld.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>
<params>
</params>
</install>
Маленькая добавкаВ каждую папку, которую мы создаём надо добавлять index.html, чтобы нельзя было просмотреть содержание папок при их прямом вызове.
<html><body bgcolor="#FFFFFF"></body></html>
P.S. Кириллица в коде в виде уникода отображается, пришлось писать транслитом.