Страница 32 из 38
Элементы <install> и <uninstall> задают SQL-скрипты, которые должны быть выполнены при установке и удалении расширения. Таким путем в базе данных создаются таблицы, хранящие данные, использующиеся расширением. Атрибут folder задает папку, в которой находятся эти скрипты в установочном пакете, например, "admin". В эти элементы должен быть вложен элемент <sql>, содержащий по одному элементу <file> для каждого файла SQL. Атрибуты тега <file>: driver - драйвер базы данных и charset - кодировка базы данных. Например:
<install> <sql> <file driver="mysql" charset="utf8">sql/install.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8" folder="sql">sql/uninstall.sql</file> </sql> </uninstall>
Элемент <files> задает список файлов, которые должны быть скопированы при установке расширения в соответствующую директорию во фронтенде. Для каждого файла добавляется вложенный элемент <filename>, для каждой папки - <folder>, причем содержимое папки уже не описывается. Пример для типичного компонента MVC:
<files folder="site"> <folder>models</folder> <folder>views</folder> <folder>controllers</folder> <filename>mycomponent.php</filename> <filename>router.php</filename> </files>
Языковые файлы описываются внутри элемента <languages>. В установочном пакете эти файлы должны находиться в папке /language/<код языка>. Для каждого из них создается вложенный элемент <language> с атрибутом tag, содержащим код языка в формате <ln-LN>:
<languages folder="site"> <language tag="ru-RU">language/ru-RU/ru-RU.com_mycomponent.ini</language> </languages>
Медиа-файлы - изображения, файлы Javascript и CSS, флэш - описываются внутри элемента <media>. Атрибут destination задает название папки, в которую будут скопированы перечисленные файлы. Эта папка должна находиться внутри папки /mediaв корне сайта. Если она не существует, то будет создана при установке расширения.
<media destination="com_mycomponent"> <folder>css</folder> <folder>images</folder> <folder>js</folder> <filename>pic1.jpg</filename> </media>
Файлы-манифесты компонентов могут включать элемент <administration>. Он содержит такие же элементы <languages> и <files>, как и описанные ранее, а также элементы для описания меню компонента в панели управления: <menu> и <submenu>.
Элемент <menu>, вложенный непосредственно в <administration>, описывает пункт в меню " Компоненты", ссылающийся на главную страницу бэкенда компонента. Атрибутом может быть img - относительный путь к пиктограмме пункта меню (по умолчанию будет присвоено значение "class:component").
Элемент <submenu> может содержать несколько вложенных элементов <menu>, описывающих подпункты этого пункта меню. У таких вложенных тегов <menu> может быть несколько атрибутов, среди которых в первую очередь отметим img и link - ссылка, переход по которой произойдет при щелчке на данном пункте меню. Если ссылка задана, то итоговый URL будет сформирован как index.php?<ссылка>. Если же атрибут link не задан, то установщик проверит наличие следующих атрибутов этого же тега: act, task, controller, view, layout, sub и добавит к строке "index.php?option=com_<имя компонента>&" соответствующие пары "имя-значение", разделенные амперсандом. Например, следующие элементы описывают пункт меню с одной и той же ссылкой index.php?option=com_mycomponent&task=edit:
<menu task="edit">COM_MYCOMPONENT_EDIT</menu> <menu link="option=com_mycomponent&task=edit">COM_MYCOMPONENT_EDIT</menu>
Текст пункта меню задается внутри тега <menu> и обязательно должен быть ключом, значение которого должно быть переведено в языковом файле, обычно - /administrator/languages/<код языка>/<код языка>.com_<имя компонента>.sys.ini.
Элемент <config> описывает настройки расширения. Обратите внимание, что для компонентов этот элемент должен находиться не в файле-манифесте, а в отдельном файле config.xmlв корневой директории бэкенда компонента. Для модулей <config> располагается в файле-манифесте и вложен в тег <extension>.
В <config> может быть вложен элемент <fields>. Его атрибут addfieldpath позволяет задать папку, в которой находится файл, определяющий собственный тип поля.
В <fields> или непосредственно в <config> вложен элемент <fieldset>, соответствующий HTML-элементу <fieldset>. Каждый <fieldset> - это группа элементов формы редактирования свойств расширения, например: " Основные настройки", " Расширенные настройки" и т.д. Атрибут name задает имя этого элемента, label - отображаемый текст.
Вложенные в <fieldset> элементы <field> задают поля формы. Каждый <field> соответствует одной настройке расширения. Допустимые атрибуты:
name - имя type - тип default - значение по умолчанию label - текст, который будет выводиться рядом с соответствующим элементом управления на форме description - описание, которое будет выводиться во всплывающей подсказке.
Некоторые стандартные типы полей:
calendar - текстовое поле, рядом с которым выводится пиктограмма для вывода календаря; category - выпадающий список категорий; editors - выпадающий список доступных WYSIWYG-редакторов; filelist - выпадающий список файлов из заданной директории; folderlist - выпадающий список папок из заданной директории; imagelist - выпадающий список файлов изображений из заданной директории; languages - выпадающий список установленных языковых файлов фронтенда или бэкенда; list - выпадающий список каких-либо строк; password - поле для ввода пароля; radio - переключатель; spacer - разделитель; sql - выпадающий список элементов, полученных в результате выполнения заданного SQL-запроса; text - текстовое поле; textarea - многострочное текстовое поле; timezones - список часовых поясов.
Для списков и переключателей в тег <field> должны быть вложены несколько элементов <option>, задающих значения, из которых пользователь может выбрать.
Например, так описывается выпадающий список для выбора порядка сортировки - по возрастанию или по убыванию:
<field name="entries_order" type="list" default="DESC" label="COM_MYCOMPONENT_ENTRIES_ORDER" description="COM_MYCOMPONENT_ENTRIES_ORDER_DESC"> <option value="DESC">COM_MYCOMPONENT_ENTRIES_ORDER_DESC</option> <option value="ASC">COM_MYCOMPONENT_ENTRIES_ORDER_ASC</option> </field>
Для таких элементов, как filelist, folderlist, imagelist, вложенные элементы <option> не нужны, т.к. список значений определяется исходя из атрибутов этих тегов. Например, выпадающий список для выбора одного из доступных WYSIWYG-редакторов описывается так:
<field name="editors" type="editors" label="COM_MYCOMPONENT_EDITOR" />
Для создания собственного типа поля необходимо создать файл <имя типа>.phpи в нем описать класс, производный от одного из классов подпакета Form: JFormFieldList, JFormFieldMedia и др. (полный ссылка: список классов- http://docs.joomla.org/Subpackage_Form/1.6см. в документации). В классе должен быть перегружен метод родительского класса, отвечающий за вывод поля формы. Простой ссылка: пример- http://docs.joomla.org/Developing_a_Model-View-Controller_%28MVC%29_Component_for_Joomla!2.5_-_Part_06приведен в документации Joomla.