Это статья из раздела Программирование для Joomla. Вернитесь в него для более полной информации.
<?xml version="1.0" encoding="windows-1251"?>
<mosinstall type="component" version="4.5.2">
<name>xcomponent</name>
<author>Имя Автора</author>
<files>
<filename>xcomponent.php</filename>
<filename>…</filename>
</files>
<install>
<queries>
<query>
CREATE TABLE IF NOT EXISTS `#__xxx` (
`id` BIGINT UNSIGNED NOT NULL auto_increment PRIMARY KEY,
`title` VARCHAR(255) NOT NULL,
`description` BLOB NOT NULL
) TYPE=MyISAM;
</query>
</queries>
</install>
<administration>
<menu>XComponent</menu>
<submenu>
<menu task="">Default task</menu>
<menu task="list">List Smth</menu>
</submenu>
<files>
<filename>admin.xcomponent.html.php</filename>
<filename>admin.xcomponent.php</filename>
<filename>xcomponent.xml</filename>
<filename>toolbar xcomponent.html.php</filename>
<filename>toolbar.xcomponent.php</filename>
</files>
</administration>
<params>
<param name="param_1" type="list" default="1" label="Описание параметра"
description="Подсказка для параметра">
<option value="1">Опция 1</option>
<option value="2">Опция 2</option>
<option value="3">Опция 3</option>
</param>
<param name="param_2" type="text" default=""
label="Описание" lenght="10" description="подсказка"/>
</params>
</mosinstall>
Выше приведен примерный вид XML-файла для компонента. Разберем его основные секции:
- Mosinstall – корневой тэг, обозначающий, что это расширение именно для Joomla (или Mambo). Его атрибуты:
- Type – тип расширения (компонент, модуль, мамбот или шаблон)
- Version – устаревший и нигде не принимаемый во внимание тэг версии Mambo/Joomla.
- Name, Author и другие тэги – авторство, лицензия, описание и домашняя страница расширения в интернете.
- Секция Files перечисляет файлы, копируемые во фронт часть компонента. Могут быть скопированы не только файлы, но и директории и файлы внутри этих директорий. Директории создаются автоматически.
- Секция Install по сути может содержать только запросы, выполняемые при установке компонента после копирований всех файлов. В приведенном примере создается таблица xxx с необходимым префиксом (“#__” это макрос, который автоматически заменяется на записанный в конфигурации префикс таблиц для данной установки Joomla).
- Секция Administration содержит:
- Описание создаваемого меню и подменю для навигации в административной части компонента. Каждый подпункт меню отличается от других посредством атрибута task (при вызове компонента значение атрибута подставляется в соответствующую переменную в адресе URL).
- Файлы, копируемые в административную часть компонента. Стандартно (так общепринято со времен компонентов для Mambo) эта часть состоит из пяти файлов:
- admin.xcomponent.php – содержит основную логику работы компонента. Файл обязателен.
- admin.xcomponent.html.php – содержит функции вывода результатов работы пользователю. Файл не обязателен.
- xcomponent.xml – в xml-файле может присутствовать секция uninstall (не описана выше, идентична секции install) в которой могут быть описаны запросы, удаляющие таблицы при удалении расширения. Если xml-файл не будет найден – компонент удалить не получится.
- toolbar.xcomponent.php – содержит код, управляющий логикой вывода навигации компонента на Toolbar. Файл обязателен.
- toolbar xcomponent.html.php – выводит навигацию, определенную в файле toolbar.xcomponent.php. Файл не обязателен.
- Секция params содержит:
- параметры доступные при редактировании пункта меню для вашего компонента.
- name - название параметра
- type - тип параметра(может быть например list,text,radio )
- default - значение по умолчанию
- label - описание параметра
- description - всплывающая подсказка
В самом компоненте обратиться к параметрам пункта меню можно при помощи следующей конструкции:
$menu =& new mosMenu( $database );
$menu->load( $Itemid );
$params =& new mosParameters( $menu->params );
$params->def( 'param_1', 1 );//проверяем заданы ли параметры, если нет то
$params->def( 'param_2', 0 );//заносим в них значения по умолчанию(второй параметр def());
$param_1=$params->get('param_1');//получаем значение параметра в нужном месте компонента
$param_2=$params->get('param_2');
См. также