Skip to content
  1. Компоненты
  2. MigxPageConfigurator
  3. Системные события

Системные события ​

Компонент бросает свои системные события на ключевых этапах — нарезке, грабинге контента, рендере, работе с лексиконами и экспорте. Через них можно вмешаться в процесс, не трогая код пакета: написать обычный плагин MODX и подписать его на нужное событие.

Все события регистрируются при установке пакета (группа MigxPageConfigurator), поэтому в списке событий менеджера они доступны сразу.

Как подписаться ​

Создайте плагин, отметьте нужное событие на вкладке «Системные события». Внутри плагина:

  • параметры события доступны как обычные переменные (имена — из таблиц ниже);
  • чтобы вернуть изменённое значение в компонент, запишите его в $modx->event->returnedValues['<ключ>'].
php
// Плагин на mpcOnGetSectionHtml — обернуть конкретную секцию
if (($section['section_name'] ?? '') === 'features') {
    $modx->event->returnedValues['html'] = '<div class="features-wrap">' . $html . '</div>';
}

Подсказка

Возврат через returnedValues работает только для событий, где компонент его читает (в таблицах — колонка «Можно вернуть»). Если она пустая, событие чисто уведомительное.

Рендер страницы ​

СобытиеКогда срабатываетПараметрыМожно вернуть
mpcOnBeforeRenderПеред рендером страницы, после сбора всех данных ресурсаresourceData, RenderresourceData
mpcOnBeforeParseConfigПеред разбором конфига в секцииsections, Rendersections
mpcOnGetSectionHtmlНа каждую секцию — после её рендера в HTML, до сборки страницыsection, html, Renderhtml

mpcOnBeforeRender даёт поправить весь resourceData; mpcOnBeforeParseConfig — вмешаться в набор секций; mpcOnGetSectionHtml — изменить HTML конкретной секции по её имени (section.section_name).

Нарезка и грабинг контента ​

СобытиеКогда срабатываетПараметрыМожно вернуть
mpcOnGetSectionFieldsValuesПосле сбора значений полей секции при грабингеsectionKey, fieldsValues, section, GrabberfieldsValues
mpcOnGetNewHtmlПри простановке плейсхолдера на месте поля (нарезка)fieldHTMLNew, Grabber (PlaceholderProcessor)fieldHTMLNew
mpcOnHandleContactПри обработке блока контактовcontact, Grabbercontact

Сохранение полей ​

СобытиеКогда срабатываетПараметрыМожно вернуть
mpcOnFieldSaveПосле успешной записи значения поля через write-API (правки из визуального редактора/админки), перед инвалидацией кэшаresourceId, address—

address — адрес записанного поля (содержит, в частности, уровень level: resource/type/global). Удобно для реакции на правку контента — например, сбросить свой кэш или уведомить внешнюю систему.

Стандартные события MODX

Помимо своих событий, компонент подписывает плагин на штатные события MODX OnBeforeDocFormSave и OnDocFormSave — чтобы фиксировать в журнале правки контента из формы ресурса в админке. Подробнее — в разделе Аудит правок.

Лексиконы ​

СобытиеКогда срабатываетПараметрыМожно вернуть
mpcOnGetResourceIdentifierПри определении идентификатора ресурса (имени файла лексикона)rid, Grabberrid
mpcOnGetLexiconKeyПри формировании ключа лексикона для поляsectionLexiconPrefix, lexiconKey, fieldName, GrabberlexiconKey
mpcOnImportLexiconValueПри импорте значения переводаvaluevalue

Медиа ​

СобытиеКогда срабатываетПараметрыМожно вернуть
mpcOnBeforeDownloadFileПеред загрузкой файла медиа (картинка/видео/аудио/прочее)fileName, extension, type, downloadPath, GrabberfileName

Тип медиа (images/videos/audios/others) определяется по тегу элемента (см. Работа с медиа), а не по расширению.

Язык на запросе ​

СобытиеКогда срабатываетПараметрыМожно вернуть
mpcOnBeforeSetLanguageSettingsПеред тем как пакет выставит язык на запросе (событие MODX OnHandleRequest)available, default, cookieName, Mpcavailable, default, cookieName, skip

По умолчанию пакет сам определяет язык на каждый запрос: берёт список доступных языков, язык по умолчанию и имя cookie из настроек и выставляет cultureKey. Это событие позволяет вмешаться в этот момент, не выключая механизм целиком (полный выключатель — настройка mpc_set_language_on_request).

Что можно вернуть через returnedValues:

  • available — другой набор доступных языков (массив или строка через запятую);
  • default — другой язык по умолчанию;
  • cookieName — другое имя cookie с языком;
  • skip — любое непустое значение полностью отменяет установку языка пакетом (язык поставит ваш код).
php
// Плагин на mpcOnBeforeSetLanguageSettings — отдать установку языка своему коду
$modx->event->returnedValues['skip'] = true;
php
// Или просто подменить набор языков и язык по умолчанию
$modx->event->returnedValues['available'] = 'ru,en,de';
$modx->event->returnedValues['default'] = 'en';

Экспорт лексиконов (XLSX) ​

СобытиеКогда срабатываетПараметрыМожно вернуть
mpcOnBeforeSaveExcelДважды: до открытия файла и после открытия, перед первой строкойfilePath, ExcelFileHandler; во втором вызове дополнительно sheetfilePath (только в пределах assets/)
mpcOnAddCellToExcelПеред добавлением строки в XLSXvalues, keys, filePath, ExcelFileHandler—

Событие mpcOnBeforeSaveExcel срабатывает дважды:

  1. До открытия файла — параметры filePath и ExcelFileHandler. На этом этапе можно подменить путь к файлу, вернув filePath (значение принимается только в пределах каталога assets/).
  2. После открытия файла, перед записью первой строки — те же параметры плюс sheet (объект текущего листа OpenSpout). Здесь путь уже зафиксирован; параметр sheet позволяет настроить лист до записи данных, например заморозить шапку или колонки через SheetView. Настраивать лист нужно именно здесь: OpenSpout пишет <sheetViews> лениво при добавлении первой строки, и более поздние изменения уже не применятся.