Читаем Разрботка расширений для CMS Joomla полностью

Файл-манифест

Рассмотрена структура файла-манифеста. Приведен практический пример создания установочного пакета для модуля и для компонента.

Цель лекции:Изучить структуру файла-манифеста и процесс создания установочных пакетов для модулей и компонентов.

Структура манифеста

Для каждого расширения Joomla может существовать файл-манифест. Манифест- это файл XML, содержащий метаданные о расширении, данные для установки и/или описание его настроек. Манифест должен называться <имя расширения>.xml и находиться в корневой директории установочного пакета.

Иерархия элементов в манифесте приведена на рис. 8.1.

(есть увеличенное изображение)


Рис. 8.1.  Иерархия элементов в файле-манифесте

Корневым тегом манифеста является тег . Он может иметь следующие атрибуты:

type - тип расширения: component, file, language, library, module, package, plugin; version - версия Joomla, для которой написано расширение: 1.6, 2.5 и т.д.; method - будут ли при установке перезаписаны файлы расширения, если они уже существуют: upgrade (да), new (сообщить в таком случае об ошибке); client - для модулей: задает, предназначен этот модуль для бэкенда (administrator) или фронтенда (site); group - для плагинов: группа.


Внутри тега в первую очередь обычно задаются метаданные: , , , , , , , , однако их можно опустить.

Элемент задает PHP-скрипт, который будет выполнен до, во время и/или после установки, удаления или обновления расширения. Этот скрипт должен содержать класс <префикс><имя расширения>IntallerScript, где префикс зависит от типа расширения (com_, mod_ и т.д.). Данный класс должен содержать следующие public-методы:

__constructor(JAdapterInstance $adapter); bool preflight(string $route, JAdapterInstance $adapter); bool postflight(string $route, JAdapterInstance $adapter); bool install(JAdapterInstance $adapter); bool update(JAdapterInstance $adapter); bool uninstall(JAdapterInstance $adapter);

где

adapter - объект, отвечающий за запуск этого скрипта; $route - какое событие происходит: install, uninstall, discover_install. Событие discover_install происходит при поиске расширений из менеджера расширений в панели управления (эта функция Joomla позволяет установить расширения, файлы которых предварительно были загружены на сайт вручную).


Методы preflight и postflight будут вызваны соответственно до и после установки/удаления/обновления расширения.

Элементы и задают SQL-скрипты, которые должны быть выполнены при установке и удалении расширения. Таким путем в базе данных создаются таблицы, хранящие данные, использующиеся расширением. Атрибут folder задает папку, в которой находятся эти скрипты в установочном пакете, например, "admin". В эти элементы должен быть вложен элемент , содержащий по одному элементу для каждого файла SQL. Атрибуты тега : driver - драйвер базы данных и charset - кодировка базы данных. Например:

sql/install.sql sql/uninstall.sql

Элемент задает список файлов, которые должны быть скопированы при установке расширения в соответствующую директорию во фронтенде. Для каждого файла добавляется вложенный элемент , для каждой папки - , причем содержимое папки уже не описывается. Пример для типичного компонента MVC:

models

views controllers mycomponent.php router.php

Языковые файлы описываются внутри элемента . В установочном пакете эти файлы должны находиться в папке /language/<код языка>. Для каждого из них создается вложенный элемент с атрибутом tag, содержащим код языка в формате :

language/ru-RU/ru-RU.com_mycomponent.ini

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже