Система плагинов
Эта документация описывает систему плагинов, реализованную в приложении.
Общая информация
Система плагинов позволяет расширять функциональность приложения без изменения его исходного кода. Плагины могут добавлять новые возможности, изменять поведение существующих функций и взаимодействовать с другими плагинами.
Структура плагина
Каждый плагин должен иметь следующую структуру:
plugins/
├── ИмяПлагина/
│ ├── plugin.properties # Файл свойств плагина (для нового способа)
│ ├── plugin.json # Файл конфигурации плагина
│ ├── plugin.php # Файл инициализации плагина (для старого способа)
│ └── src/ # Директория с исходным кодом плагина
│ └── ... # Классы плагинаФайл plugin.properties
Файл plugin.properties содержит основные свойства плагина, включая имя главного класса:
mainClass=namespace\\ИмяГлавногоКлассаГлавный класс плагина должен наследоваться от fs\AbstractPlugin и реализовывать метод init().
Файл plugin.json
Файл plugin.json содержит метаданные плагина:
Создание плагина (новый способ)
Создайте директорию для плагина в папке
plugins/.Создайте файл
plugin.propertiesс указанием главного класса.Создайте файл
plugin.jsonс метаданными плагина.Создайте директорию
src/для исходного кода плагина.Создайте главный класс плагина, наследующийся от
fs\AbstractPlugin.
Пример главного класса плагина:
Создание плагина (старый способ)
Создайте директорию для плагина в папке
plugins/.Создайте файл
plugin.jsonс метаданными плагина.Создайте файл
plugin.phpс функцией инициализации плагина.
Пример файла plugin.php:
Хуки и фильтры
Система плагинов поддерживает хуки и фильтры для расширения функциональности:
Хуки
Хуки позволяют выполнять код в определенные моменты работы приложения:
Фильтры
Фильтры позволяют изменять данные:
Зависимости плагинов
Плагины могут зависеть от других плагинов. Зависимости указываются в файле plugin.json в поле requires:
Система плагинов автоматически загружает зависимости перед загрузкой плагина.
Настройки плагинов
Плагины могут иметь настройки, которые указываются в файле plugin.json в поле settings:
Настройки доступны через методы getSettings(), getSetting() и setSetting() класса AbstractPlugin.
Last updated