Обработчики
События MODX, на которые подписан пакет, и что фреймворк делает на каждом. Ваш класс с тем же именем отрабатывает после фреймворкового — см. События.
Жизненный цикл запроса
| Событие | Что делает фреймворк |
|---|---|
OnMODXInit | Пока ничего. Зарегистрировано с priority: 1000, чтобы компонент поднимался раньше плагинов, которые могут на него опираться. |
OnHandleRequest | Заводит псевдонимы modUser и modUserProfile для классов из MODX\Revolution\, стартует сессию, создаёт CSRF-токен, если его в сессии нет, переключает локаль, когда URI несёт языковой префикс, и передаёт запрос маршрутизации. Пропускает расширения ассетов (.css, .js, картинки, шрифты), а при pageblocks_routing = off — всё, что вне mgr/. |
OnWebPageInit | Подготовка фронта для запрошенной страницы: отправляет заголовки безопасности, подключает слой стилей через regClientCSS (если не выключен pageblocks_load_styles), добавляет скрипт reCAPTCHA, когда заполнен публичный ключ, и — если не выключен pageblocks_load_scripts — фронтовые скрипты вместе с их настройкой. |
OnCacheUpdate | Чистит кэш маршрутов, кэш шаблонов Fenom, кэш компонента и кэш menu, сбрасывает $_SESSION['pageblocks']. Срабатывает при любой очистке кэша MODX. |
Единственный случай, когда слой стилей нужно подключить тегом
OnWebPageInit подключает стили блоков сам, поэтому обычной странице MODX от вас не нужно ничего — ни {pb_styles()}, ни <link> руками. Но страница, которую рисует роутер компонента, до этого события не доходит: OnHandleRequest отдаёт ответ и выходит раньше. В таком шаблоне — и только в нём — поставьте {pb_styles()} в <head>.
Чистка кэша MODX чистит и наш
OnCacheUpdate означает, что кнопка «Очистить кэш» в менеджере уже покрывает PageBlocks — маршруты, скомпилированные шаблоны и кэшированные списки. Руками чистить почти никогда не нужно.
Форма ресурса
| Событие | Что делает фреймворк |
|---|---|
OnDocFormPrerender | На существующем ресурсе подгружает менеджерские скрипты компонента. В режиме new пропускается. |
OnDocFormRender | Рисует в форме поля секций ресурса. В режиме new пропускается. |
OnBeforeDocFormSave | Собирает значения полей секций из отправленной формы и записывает их в ресурс. |
OnResourceDuplicate | Копирует содержимое PageBlocks в копию ресурса: блоки, вложенные в них таблицы и галереи, строки полей секций. Значения кастомных полей едут внутри properties, который MODX копирует сам. |
Форма пользователя
| Событие | Что делает фреймворк |
|---|---|
OnUserFormPrerender | Подгружает менеджерские скрипты для существующего пользователя. В режиме new пропускается. |
OnUserFormRender | Рисует в форме поля секций пользователя. |
OnUserSave | Пишет кастомные поля пользователя в modx_user_attributes.extended. Работает после ядрового процессора намеренно: иначе процессор перетрёт extended. |
OnUserDuplicate | Парная к OnResourceDuplicate, но для пользователя. Принимает несколько написаний параметров процессора — они отличаются от сборки к сборке MODX. |
OnUserRemove | Фреймворкового обработчика нет. Зарегистрировано, чтобы сайт мог перехватить его своим core/App/Events/OnUserRemove.php. |
Менеджер
| Событие | Что делает фреймворк |
|---|---|
OnManagerPageBeforeRender | Подгружает базовые скрипты, скрипты данных и визуальный редактор на каждой странице менеджера. |
OnSiteSettingsRender | Добавляет modx.combo.js на страницу системных настроек. |
Где лежит код
Обработчики фреймворка — в core/components/pageblocks/src/Events/, по файлу на событие. Они короткие и читаемые: когда этой страницы не хватает, обычно хватает самого класса.