Хуки (события)
Хуки (события)
🪝 Хуки (события)
apidcms предоставляет систему хуков для расширения функциональности через плагины.
Доступные хуки
core.init
Вызывается при инициализации ядра. Можно зарегистрировать глобальные настройки.
twig.init
Вызывается при создании Twig-окружения. Позволяет добавить свои функции и фильтры.
$pm->addAction('twig.init', function($frontController, $twig) {
$twig->addFunction(new TwigFunction('my_helper', function($x) {
return strtoupper($x);
}));
});
front.router.before
Перед обработкой маршрута. Можно изменить путь или добавить редирект.
$pm->addAction('front.router.before', function($path, $frontController) {
if ($path === 'old-page') {
header('Location: /new-page', true, 301);
exit;
}
});
front.router.after
После обработки маршрута. Можно модифицировать ответ.
front.render
Вызывается перед рендером шаблона. Позволяет модифицировать данные, передаваемые в Twig.
$pm->addFilter('front.render', function($data) {
$data['cart_count'] = $cartService->getCount();
return $data;
});
admin.menu
Позволяет плагинам добавлять пункты в боковое меню админки.
$pm->addFilter('admin.menu', function($menu) {
$menu[] = ['title' => 'Мой плагин', 'url' => '/admin/myplugin', 'icon' => '🔧'];
return $menu;
});
db.migrate
Вызывается при запуске init_system_tables.php. Позволяет плагинам создавать свои таблицы.
$pm->addAction('db.migrate', function($db) {
$pdo = $db->getConnection();
$pdo->exec('CREATE TABLE IF NOT EXISTS my_table (...)');
});
Регистрация хука
В init.php плагина:
$pm = \Core\PluginManager::getInstance();
$pm->addAction('twig.init', function($fc, $twig) {
// ваш код
}, 10, 'my_plugin');
| Параметр | Описание |
|---|---|
$hook |
Имя хука |
$callback |
Функция-обработчик |
$priority |
Приоритет (10 по умолчанию, меньше = раньше) |
$plugin |
Имя плагина (для идентификации) |
Фильтры vs Экшены
addAction— выполнить действие, ничего не возвращаетaddFilter— модифицировать значение и вернуть
$pm->addFilter('page_title', function($title) {
return $title . ' — Мой сайт';
});