Хуки и события
Хуки позволяют модулю вмешаться в жизненный цикл системы без изменения ядра: проверить или дополнить данные, запустить интеграцию, очистить собственный кеш или изменить результат рендера.
Для подписки используется App\Helpers\Hooks. Большинство системных событий
передают изменяемый объект App\Common\LifecycleEvent; сохранение документа
использует специализированный DocumentSaveEvent.
Карта раздела
| Страница | Назначение |
|---|---|
| Подписка и контекст | Manifest, приоритеты, LifecycleEvent, action/filter и собственные события. |
| Сохранение документов | Изменение данных и полей, отклонение сохранения, события публикации. |
| События полей | Нормализация, валидация, запись и публичный рендер. |
| Каталог событий | Полный список стабильных точек расширения ядра. |
| Отладка и надёжность | Public Debug, ошибки, производительность и внешние сервисы. |
Базовое правило
Подписку модуля объявляйте в его module.php, а обработчик размещайте в классе:
'hooks' => array(
array(
'name' => 'content.document.saved',
'handler' => array(Subscriber::class, 'onDocumentSaved'),
'priority' => 20,
),
),
Обработчик не подключается вручную: классы загружает namespace-loader, подписку
регистрирует ModuleManager. Хуки из секции public работают только на сайте,
из admin — только в панели управления, верхнеуровневые — в обоих runtime.
Не используйте хук как скрытый вызов контроллера. Контекст должен быть небольшим, предсказуемым и документированным, а долгую работу нужно выносить из критического HTTP-запроса.