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