|
В этой главе...
- О том, как создать модуль и компонент
- Установка созданных нами расширений
- Проблемы при установке расширений
- Работа с базой данных средствами Joomla
- Языковые файлы, создание многоязычных расширений
Опять о типах расширений
Как мы уже знаем, в Joomla существуют расширения трех типов: модули, компоненты и плагины. Модули используются для вывода информации и организации минимального взаимодействия с пользователем. На странице сайта может отображаться несколько модулей. Компонент используется для организации взаимодействия с пользователем и занимает всю центральную часть страницы. На странице сайта может быть только один компонент.
Плагины же работают на более низком уровне и обрабатывают данные, передающиеся из Joomla в браузер пользователя и обратно.
В этой книге мы поговорим о создании модулей и компонентов. Создание плагинов, учитывая всю сложность этого процесса, выходит за рамки этой книги.
Мы не будем рассматривать основы РНР, а весь материал в этой главе будет рассчитан на то, что вы полностью владеете этим языком программирования. Если это не так, в любом книжном магазине вы без проблем найдете книжку по РНР (в том числе и мою).
Разработка модуля
Структура модуля
Модуль состоит как минимум из двух файлов: служебного XML-файла и файла кода (PHP-файл). Первый файл содержит всю информацию о модуле, а также инструкции относительно установки модуля в системе. Второй файл содержит непосредственно сам PHP-код модуля.
Опять о типах расширений
Как мы уже знаем, в Joomla существуют расширения трех типов: модули, компоненты и плагины. Модули используются для вывода информации и организации минимального взаимодействия с пользователем. На странице сайта может отображаться несколько модулей. Компонент используется для организации взаимодействия с пользователем и занимает всю центральную часть страницы. На странице сайта может быть только один компонент.
Плагины же работают на более низком уровне и обрабатывают данные, передающиеся из Joomla в браузер пользователя и обратно.
В этой книге мы поговорим о создании модулей и компонентов. Создание плагинов, учитывая всю сложность этого процесса, выходит за рамки этой книги.
Мы не будем рассматривать основы РНР, а весь материал в этой главе будет рассчитан на то, что вы полностью владеете этим языком программирования. Если это не так, в любом книжном магазине вы без проблем найдете книжку по РНР (в том числе и мою).
Разработка модуля
Структура модуля
Модуль состоит как минимум из двух файлов: служебного XML-файла и файла кода (PHP-файл). Первый файл содержит всю информацию о модуле, а также инструкции относительно установки модуля в системе. Второй файл содержит непосредственно сам PHP-код модуля.
Разработка служебного XML-файла
Создайте каталог mod_mymodule. В него мы поместим оба файла нашего модуля. Первым делом нужно разработать XML-файл. В большинстве случаев он будет стандартным — вам нужно будет только изменять имя модуля и имя PHP-файла. В листинге 9.1 приведен типичный XML-файл модуля.
Листинг 9.1. Файл mod_mymodule. xml
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>My Module</name>
<author>Denis Kolisnichenko</author>
<copyright>(C) 2008 Denis Kolisnichenko</copyright>
<creationDate>Oct 2008</creationDate>
<authorEmail>
Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
</authorEmail>
<authorUrl>www.dkws.org.ua</authorUrl>
<description>My first module</description> <version>l.0.0</version> <files>
<filename module="mod_mymodule">mod_mymodule .php</filename> </files> <params>
<param name="your_name" type="text" default="Denis" label="Your Name" description="Your name" /> </params> </install>
Проанализируем содержимое XML-файла. Первая строка обязательна для всех XML-файлов. Вы можете разве что указать другую кодировку. Вторая строка говорит о том, что наше расширение — модуль (type="module") и для его установки нужна версия Joomla 1.5.0 или выше:
<install type="module" version="1.5.0">
Далее следует стандартная информация о модуле:
- название — name;
- разработчик — author;
- 156 Глава 9
- дата создания — creationDate;
- информация об авторских правах — copyright;
- "координаты" автора — authorEmail, authorUrl;
- описание модуля — description;
- версия — version.
Блок files описывает файлы модуля, у нас всего один файл:
<files>
<filename module="mod_mymodule">mod_mymodule .php</filename> </files>
В блоке params описываются параметры модуля, которые можно будет изменить с помощью интерфейса администратора. Каждый параметр описывается с помощью тега param. Вам нужно указать следующие атрибуты этого тега:
- name — имя параметра в сценарии;
- type — тип параметра (текст в данном случае);
- default — значение по умолчанию;
- label — подпись параметра в интерфейсе администратора;
- description — описание параметра (можно не указывать).
Секцию <install> нужно обязательно закрыть:
</install>
Разработка РНР-файла
Теперь можно приступить к созданию файла mod_mymodule.php — это главный файл модуля, содержащий его исходный код. Наш модуль будет предельно прост, но, тем не менее, он демонстрирует основные принципы создания модулей для Joomla. Модуль попросту будет выводить строку: Hello, <Имя>.
Код нашего модуля представлен в листинге 9.2.
ЛИСТИНГ 9.2. Код файла mod_mymodule.php
<?php
// прямой доступ запрещен
defined( '_JEXEC ) or die ( 'Restricted access1 ) ;
// получаем значение
SUserName = $params->get('your_name', 0);
// Выводим строку
echo "<strong>" . JText::_('Hello, ') . SUserName . "</strong>.";
Создание собственных расширений 157
Теперь рассмотрим основные моменты нашего простого модуля. Если определена константа JEXEC, модуль выполняется вместе с Joomla, если же такой константы нет, значит, модуль запущен непосредственно (например, злоумышленником), и поэтому мы должны прервать выполнение такого РНР-кода.
Получить значение параметров модуля, установленных в окне Менеджер модулей, можно с помощью метода get объекта $params:
$UserName = $params->get('your_name', 0);
Все, что нам осталось — это просто сделать вывод. Я рекомендую обычные фразы, например Send (Отправить), Save (Сохранить), выводить через статический класс Jtext: тогда Joomla автоматически переведет их на выбранный пользователем язык интерфейса.
|