Jump to main content Jump to doc navigation

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

Системные события - это события в MODX, которые зарегистрированы в Плагины. Они «запускаются» по всему коду 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'.

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

События ниже сгруппированы по groupname, использованному в списке событий менеджера. Полный список всех зарегистрированных событий — в transport.core.events.php.

Categories

Chunks

Contexts

Internationalization

Media Sources

Package Manager

Plugin Events

Plugins

Property Sets

Resources

RichText Editor

Security

Settings

Snippets

System

Template Variables

Templates

User Groups

User Profiles

Users

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

Для пользовательских событий пока нет графического интерфейса — создавайте их через 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);

Затем зарегистрируйте плагин на это событие — он получит параметры, переданные в invokeEvent().

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • JT Skaggs
  • deJaya
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$194 per month—let's make that $500!

Learn more