Що таке плагін
Що таке плагін
Плагін — самостійний пакет, що розширює Celena, не змінюючи її ядро. Він може:
- додавати сторінки в адмінку та/або на фронт;
- реєструвати нові теги шаблонізатора та async-блоки;
- підписуватися на хуки ядра (
news.published,user.registeredтощо) і випускати власні; - мати власні міграції, моделі та сервіси;
- розповсюджуватися через маркетплейс або вручну (zip).
Важливий принцип: ядро самодостатнє. Без плагіна все працює; плагін лише розширює через хуки і не модифікує ядро. Плагіни можна вмикати й вимикати в розділі Плагіни панелі керування.
Структура
plugins/<slug>/
├── manifest.json метадані (обовʼязково)
├── plugin.php точка входу (обовʼязково)
├── README.md рекомендовано
├── migrations/ міграції БД (необовʼязково)
├── src/ PHP-класи (PSR-4 Celena\Plugin\<Slug>\)
│ ├── Controllers/
│ ├── Admin/
│ ├── Repositories/
│ └── Support/
├── templates/ .tpl плагіна (адмінка і фронт)
├── languages/ ru.json, en.json тощо
├── assets/ CSS/JS → копіюються в public/assets/plugins/<slug>/
└── docs/ Markdown-документація плагіна
manifest.json
{
"slug": "shop",
"name": "Інтернет-магазин",
"version": "1.0.0",
"author": "Celena",
"description": "Каталог, кошик, замовлення, платежі.",
"requires": { "php": ">=8.3", "celena": ">=1.0", "plugins": [] },
"permissions": ["news.read", "options.write"],
"migrations": "migrations/"
}
Поле slug обовʼязкове і має відповідати ^[a-z0-9][a-z0-9_\-]*$. Імʼя теки = slug.
Як ядро знаходить і вантажить плагіни
PluginManager::discover()скануєplugins/*, читає коженmanifest.json.- Список активних плагінів зберігається в опції
active_plugins(JSON-масив slug-ів у таблиціcl_celena_options). - Для активних плагінів
PluginManager::load():- реєструє простір імен
Celena\Plugin\<Slug>\→plugins/<slug>/src/; - підключає
plugin.php(тут реєструються маршрути, хуки, теги); - синхронізує
assets/уpublic/assets/plugins/<slug>/.
- реєструє простір імен
Увімкнення/вимкнення плагіна = додавання/видалення його slug в active_plugins (через адмінку). При першому ввімкненні проганяються міграції.
Еталонні плагіни
У комплекті є робочі плагіни — вивчайте їх як зразок:
plugins/leads/— конструктор форм і приймання заявок (форми, honeypot, експорт, інʼєкція форми в лендинг). Гарний мінімальний приклад.plugins/analytics/— власна аналітика (трекер, події, цілі, дашборд).plugins/shop/— великий e-commerce (каталог, кошик, замовлення) — приклад великого плагіна.
Далі — покрокове створення плагіна.