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> лениво при добавлении первой строки, и более поздние изменения уже не применятся.