Аддоны
Что такое аддон?
Под аддоном понимается дополнение дополняющее логику плагина или темы и тем самым расширяющее его возможности.
Аддон темы
Аддон темы позволяет переопределить часть шаблонов темы. Подключение аддонов выполняется в алфавитном порядке.
В случае если файл php шаблона с идентичным названием встречается в нескольких аддонах, будет подключен файл первого из подключенных аддонов (верхнего в списке аддонов темы).
Аддоны видны в списке дополнений только под дополнением для которого они были написаны, активация их доступна только после активации темы. В отличии от темы их может быть активировано несколько.
В случае если дополнение было выключено выключаются также и его аддоны.
Аддоны тем располагаются также в директории /themes/.
Рассмотрим структуру обязательного файла index.php аддона темы:
<?php
class Theme_StartAddon1 extends ThemeAddon
{
public function init()
{
parent::init();
$this->setSettings(array(
'theme_title' => 'Название аддона',
'theme_version' => '1.0.0', // Версия аддона
'extension_id' => 't0be932932ee5f2ec040bcc7e91cc25d0176dc71', // уникальный идентификатор дополнения
));
// Стандартная тема
$this->setAddonFor('base');
// Стартовая тема (уникальный идентификатор темы)
$this->setAddonFor('t062d9070171056ece3322974c559def61ca11ff');
/**
* Настройки
*/
$this->configSettings(array(
// Настройки аддона
));
}
protected function start()
{
}
}
Опишем подробнее:
- Название класса аддона темы всегда начинается с префикса
Theme_
, а сам класс наследует базовый классThemeAddon
. - В обязательной функции
init
указывается название аддона, его версия, а также объявляются дополнительные настройки. При этом настройки совпадающие по названию ключа перекрывают настройки исходной темы. - Посредством вызова метода
setAddonFor
указывается принадлежность к теме. Подобных вызовов может быть несколько, соответственно аддон может быть привязан к нескольким темам (как это показано в примере). - Весь остальной код аддона следует размещать уже в функции
start
, а также в функциях данного класса. Дополнительные php файлы с фунциями также следует подключать в функцииstart
, либо же непосредственно перед использованием.
В случае если необходимо вносить изменения (доработки) в шаблоны существующего аддона, сделать это можно путем использования механизма кастомизации.
В остальном аддон темы имеет все те же возможности что и тема.
Аддоны-плагины
Работа аддона-плагина идентична по своей функции аддонам тем.
Файл index.php идентичен по структуре обычному плагину. Располагаются аддоны в директории /plugins/.
Для того чтобы указать связь с плагином выполняется вызов метода setAddonFor
в котором указывается идентификатор исходного плагина. Также возможна его привязка к нескольким плагинам и/или темам.