Jump to main content Jump to doc navigation

Что такое системные события?

Системные события - это события в MODX, которые зарегистрированы в Plugins. Они «запускаются» по всему коду MODX, что позволяет плагинам взаимодействовать с кодом MODX и добавлять пользовательские функции без исправления основного кода.

Модель системного события

Таблица системных событий находится в {table_prefix}_system_eventnames, и имеет следующие поля:

  • id - Уникальный ID.
  • name - Название события. Это то, как они вызываются в коде, через метод modX.invokeEvent.
  • service - Тип системного события.
  • groupname - Используется для пользовательских интерфейсов, прежде всего для фильтрации, группировки и сортировки событий. Не используется явно в модели modx.

Service Types

Поле 'service' в системном событии является числом; числа указывают на различные типы системных событий. Они следующие:

  • 1 - Parser Service Events
  • 2 - Manager Access Events
  • 3 - Web Access Service Events
  • 4 - Cache Service Events
  • 5 - Template Service Events
  • 6 - User Defined Events

Тип 3 не запускается в контексте 'mgr', а тип 2 - не запускается ни в каком контексте, кроме 'mgr'.

Доступные события

Это не исчерпывающий список, так как события все еще документируются, заранее благодарим за ваше терпение! События TV, шаблонов и сниппетов еще не задокументированы. Для получения полного списка, пожалуйста, либо посмотрите плагин в Менеджере и посмотрите вкладку Системные события, либо просмотрите здесь. Также обратите внимание, что все события WUsr (веб-пользователя) были удалены.

Кастомные события

Вы можете создавать свои собственные пользовательские события, но в настоящее время для этого нет графического интерфейса, вместо этого вы должны использовать API. События имеют следующие атрибуты:

  • name - уникальное имя события.
  • service - неудачная попытка сгруппировать события для определенных областей. 1,2,4,5,6 загружаются внутри менеджера, тогда как 1,3,4,5,6 загружаются вне менеджера. (см. getEventMap())
  • groupname - Используется для визуальной группировки событий в менеджере MODX (отображается как вкладка плагина).

Создание события с использованием API MODX будет выглядеть примерно так

$Event = $modx->newObject('modEvent');
$Event->set('name', 'OnMyCustomEvent');
$Event->set('service',1);
$Event->set('groupname', 'Custom');

Тогда ваш код может вызвать событие по имени:

$modx->invokeEvent('OnMyCustomEvent', $options);

Наконец, можно установить плагин для прослушивания этого события. В этом случае он может получать параметры, переданные ему.

//... TODO...

Смотрите также