Системные события
Компонент бросает свои системные события на ключевых этапах — нарезке, грабинге контента, рендере, работе с лексиконами и экспорте. Через них можно вмешаться в процесс, не трогая код пакета: написать обычный плагин MODX и подписать его на нужное событие.
Все события регистрируются при установке пакета (группа MigxPageConfigurator), поэтому в списке событий менеджера они доступны сразу.
Как подписаться
Создайте плагин, отметьте нужное событие на вкладке «Системные события». Внутри плагина:
- параметры события доступны как обычные переменные (имена — из таблиц ниже);
- чтобы вернуть изменённое значение в компонент, запишите его в
$modx->event->returnedValues['<ключ>'].
// Плагин на mpcOnGetSectionHtml — обернуть конкретную секцию
if (($section['section_name'] ?? '') === 'features') {
$modx->event->returnedValues['html'] = '<div class="features-wrap">' . $html . '</div>';
}Подсказка
Возврат через returnedValues работает только для событий, где компонент его читает (в таблицах — колонка «Можно вернуть»). Если она пустая, событие чисто уведомительное.
Рендер страницы
| Событие | Когда срабатывает | Параметры | Можно вернуть |
|---|---|---|---|
mpcOnBeforeRender | Перед рендером страницы, после сбора всех данных ресурса | resourceData, Render | resourceData |
mpcOnBeforeParseConfig | Перед разбором конфига в секции | sections, Render | sections |
mpcOnGetSectionHtml | На каждую секцию — после её рендера в HTML, до сборки страницы | section, html, Render | html |
mpcOnBeforeRender даёт поправить весь resourceData; mpcOnBeforeParseConfig — вмешаться в набор секций; mpcOnGetSectionHtml — изменить HTML конкретной секции по её имени (section.section_name).
Нарезка и грабинг контента
| Событие | Когда срабатывает | Параметры | Можно вернуть |
|---|---|---|---|
mpcOnGetSectionFieldsValues | После сбора значений полей секции при грабинге | sectionKey, fieldsValues, section, Grabber | fieldsValues |
mpcOnGetNewHtml | При простановке плейсхолдера на месте поля (нарезка) | fieldHTMLNew, Grabber (PlaceholderProcessor) | fieldHTMLNew |
mpcOnHandleContact | При обработке блока контактов | contact, Grabber | contact |
Сохранение полей
| Событие | Когда срабатывает | Параметры | Можно вернуть |
|---|---|---|---|
mpcOnFieldSave | После успешной записи значения поля через write-API (правки из визуального редактора/админки), перед инвалидацией кэша | resourceId, address | — |
address — адрес записанного поля (содержит, в частности, уровень level: resource/type/global). Удобно для реакции на правку контента — например, сбросить свой кэш или уведомить внешнюю систему.
Стандартные события MODX
Помимо своих событий, компонент подписывает плагин на штатные события MODX OnBeforeDocFormSave и OnDocFormSave — чтобы фиксировать в журнале правки контента из формы ресурса в админке. Подробнее — в разделе Аудит правок.
Лексиконы
| Событие | Когда срабатывает | Параметры | Можно вернуть |
|---|---|---|---|
mpcOnGetResourceIdentifier | При определении идентификатора ресурса (имени файла лексикона) | rid, Grabber | rid |
mpcOnGetLexiconKey | При формировании ключа лексикона для поля | sectionLexiconPrefix, lexiconKey, fieldName, Grabber | lexiconKey |
mpcOnImportLexiconValue | При импорте значения перевода | value | value |
Медиа
| Событие | Когда срабатывает | Параметры | Можно вернуть |
|---|---|---|---|
mpcOnBeforeDownloadFile | Перед загрузкой файла медиа (картинка/видео/аудио/прочее) | fileName, extension, type, downloadPath, Grabber | fileName |
Тип медиа (images/videos/audios/others) определяется по тегу элемента (см. Работа с медиа), а не по расширению.
Экспорт лексиконов (XLSX)
| Событие | Когда срабатывает | Параметры | Можно вернуть |
|---|---|---|---|
mpcOnBeforeSaveExcel | Перед сохранением XLSX-файла | filePath, ExcelFileHandler | filePath (только в пределах assets/) |
mpcOnAddCellToExcel | Перед добавлением строки в XLSX | values, keys, filePath, ExcelFileHandler | — |
