Аддоны

Что такое аддон?

Под аддоном понимается дополнение дополняющее логику плагина или темы и тем самым расширяющее его возможности.

Аддон темы

Аддон темы позволяет переопределить часть шаблонов темы. Подключение аддонов выполняется в алфавитном порядке.
В случае если файл 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 в котором указывается идентификатор исходного плагина. Также возможна его привязка к нескольким плагинам и/или темам.