MODX. Плагины и события

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

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

Что же дают плагины?

  • Умея использовать плагины не придется изменять отлаженный код движка.
  • Написанное решение можно кидать из проекта в проект и делиться им с сообществом.
  • Увеличенную гибкость решений при работе с MODX.

Будьте внимательны, неправильное указание пути, или другая опечатка в коде, может привести к 500 ошибке при попытке попасть в административную панель, которую можно исправить только c наличием доступа к SQL базе и FTP. 

Официальное описание плагинов.

Если подключение плагина в MODX вызвало 500 ошибку, надо исправить плагин через внешнюю среду разработки, либо отключить / удалить плагин через phpmyadmin в таблице prefix_site_plugins, затем переименовать / удалить папку /core/chache.

Если вам нужно знать, какое событие вызвало ваш плагин (скажем, для плагина, который прослушивает более одного события), вы можете получить доступ к имени события следующим образом:

$eventName = $modx->event->name;

Список событий MODX

OnBeforeCacheUpdate
  • core/model/modx/processors/system/clearcache.class.php (71)
  • manager/controllers/default/system/refresh_site.php (11)

Запускается перед обновлением кэша.

OnBeforeChunkFormDelete
  • core/model/modx/processors/element/chunk/remove.class.php (16)
  • Параметры
    • chunk (ссылка на объект modChunk)
    • id (id чанка)

Запускается перед удалением чанка.

OnBeforeChunkFormSave
  • core/model/modx/processors/element/chunk/update.class.php (23)
  • core/model/modx/processors/element/chunk/create.class.php (22)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • chunk (ссылка на объект modChunk)
    • id (id чанка)

Запускается после отправки формы, но перед тем как сохранить чанк.

OnBeforeDocFormDelete
  • core/model/modx/processors/resource/delete.class.php (169)
  • Параметры
    • resource (ссылка на объект modResource)
    • id (id ресурса)
    • children (массив id_шников детей которые будут тоже удалены)

Запускается перед удалением ресурса.

Такой плагин выведет сообщение о том, что нельзя удалять определенный ресурс, и в логи добавит запись:

OnBeforeDocFormSave
  • core/model/modx/processors/resource/create.class.php (54)
  • core/model/modx/processors/resource/update.class.php (55)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • id (id ресурса, для новых будет 0)
    • resource (ссылка на объект modResource)

Запускается перед сохранением ресурса.

Важно! Перед использование этого события нужно знать.

  • Изменение или установка значения какого-либо ТВ лучше сделать с помощью OnDocFormSave. Процесс сохранения ТВ во время onBeforeDocFormSave сложнее из-за рендера ТВ значений.
  • Передавая сообщения в $modx->event->output() пользователю будет отображаться модальное окно. Делая это страница не будет сохранятся.
  • При использовании $modx->event->output() запрещается использовать html теги, только текст.
  • При установке значение какого либо поля с помощью $resource->set, не нужно вызывать $resource->save()
OnBeforeManagerLogout
  • core/model/modx/processors/security/logout.class.php (36)
  • Параметры
    • user (ссылка на объект modUser. Который прошел по ссылке)
    • loginContext (ключ контекста из которого выходят)
    • addContexts (дополнительные контексты, в которых выход также происходит.)
OnBeforeRegisterClientScripts

Добавлено в версии 2.7.0. Даёт возможность проверить списки зарегистрированных скриптов и стилей, например, чтобы не дублировать их. Но для полноценной работы в этом режиме необходимо все скрипты и стили регистрировать через соответствующие методы, а не просто вставлять в разметку.

OnBeforeSaveWebPageCache
  • core/model/modx/modx.class.php (2590)
  • Параметры
    • К ресурсу можно обратится $modx->resource

Запускается после того как ресурс загружен но еще не закэшировался. Если ресурс не кэшируемый, то это событие не сработает.

OnBeforeWebLogout
  • core/model/modx/processors/security/logout.class.php (36)
  • Параметры
    • user (ссылка на объект modUser. Который прошел по ссылке)
    • loginContext (ключ контекста из которого выходят)
    • addContexts (дополнительные контексты, в которых выход также происходит.)

Запускается перед тем как пользователь разлогиниться.

OnCacheUpdate
  • core/model/modx/modcachemanager.class.php (597, 757)
  • Параметры
    • results (результат)
    • paths (массив путей, которые должны были быть очищены)
    • options (массив параметров очистки)

Запускается после того как кэш очищен.

OnChunkFormDelete
  • core/model/modx/processors/element/chunk/remove.class.php (17)
  • Параметры
    • chunk (ссылка на объект modChunk)
    • id (id чанка)

Запускается после того как чанк удален.

OnChunkFormPrerender
  • manager/controllers/default/element/chunk/create.class.php (120)
  • manager/controllers/default/element/chunk/update.class.php (133)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • id (id чанка. Будет 0 для новых чанков)
    • chunk (ссылка на объект modChunk. Будет NULL в новых чанках)

Запускается до изменения чанка, но JS подгружается. Можно использовать для визуализации пользовательских JavaScript в mgr.

OnChunkFormRender
  • manager/controllers/default/element/chunk/create.class.php (103)
  • manager/controllers/default/element/chunk/update.class.php (167)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • id (id чанка. Будет 0 для новых чанков)
    • chunk (ссылка на объект modChunk. Будет NULL в новых чанках)

Запускается во время рендеринга. Можно впихнуть HTML прямиком в форму.

OnChunkFormSave
  • core/model/modx/processors/element/chunk/create.class.php (24)
  • core/model/modx/processors/element/chunk/update.class.php (24)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • id (id чанка. Будет 0 для новых чанков)
    • chunk (ссылка на объект modChunk. Будет NULL в новых чанках)

Запускается после сохранения.

OnDocFormDelete
  • core/model/modx/processors/resource/delete.class.php (210)
  • Параметры
    • resource (Ссылка на объект modResource)
    • id (id ресурса)
    • children (массив id_шников детей которые тоже удалены)

Запускается после удаления ресурса.

OnDocFormPrerender
  • manager/controllers/default/resource/resource.class.php (160)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • resource (ссылка на объект modResource. Будет NULL для новых ресурсов)
    • id (идентификатор ресурса. Будет 0 для новых ресурсов)

Запускается перед тем как форма редактирования загрузится.

OnDocFormRender
  • manager/controllers/default/resource/resource.class.php (174)
  • manager/controllers/default/resource/create.class.php (34)
  • manager/controllers/default/resource/update.class.php (39)
  • manager/controllers/default/resource/symlink/create.class.php (23)
  • manager/controllers/default/resource/symlink/update.class.php (24)
  • manager/controllers/default/resource/weblink/create.class.php (23)
  • manager/controllers/default/resource/weblink/update.class.php (24)
  • manager/controllers/default/resource/staticresource/create.class.php (23)
  • manager/controllers/default/resource/staticresource/update.class.php (23)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • resource (ссылка на объект modResource. В версии 2.4 будет пустой объект, в более новых Будет NULL для новых ресурсов)
    • id (идентификатор ресурса. Будет 0 для новых ресурсов)

Запускается в форме редактирования диспетчера. Удобно для вставки HTML в формах и 2.4+ для установки значений по умолчанию на новые ресурсы

В версии 2.4.0+ можно устанавливать значения для полей:

  • pagetitle
  • longtitle
  • description
  • introtext
  • content
  • link_attributes
  • alias
  • menutitle

Рекомендуется для установки на новые ресурсы, для существующих значения будут перезаписаны.

OnDocFormSave
  • core/model/modx/processors/resource/update.class.php (56)
  • core/model/modx/processors/resource/create.class.php (589)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • resource (ссылка на объект modResource)
    • id (id ресурса. У новых тоже есть)

Запускается после того как ресурс сохранен.

Важно! Перед использование этого события нужно знать.

  • Если нужно изменить ТВ, то лучше изменить их тут, а не через OnBeforeDocFormSave.
  • В отличие от OnBeforeDocFormSave, это событие не поддерживает $modx->event->output() метод.
  • Сохранение происходит автоматически. Не нужно вызывать $resource->save()
OnDocPublished
  • core/model/modx/processors/resource/publish.class.php (108)
  • Параметры
    • id (id опубликованного ресурса)
    • resource (ссылка на объект modResource который публикуется)

Запускается после того как ресурс опубликован через контекстное меню документа в дереве ресурсов.

Важно! Перед использование этого события нужно знать.

  • Событие срабатывает только при публикации ресурса через контекстное меню документа в дереве ресурсов. Если вы поставите галочку опубликован при редактировании документа на странице самого документа, ничего не произойдет.
OnDocUnPublished
  • core/model/modx/processors/resource/unpublish.class.php (92)
  • Параметры
    • id (id ресурса снятого с публикации)
    • resource (ссылка на объект modResource который снимается с публикации)

Запускается после того как ресурс снят с публикации через контекстное меню документа в дереве ресурсов.

Важно! Перед использование этого события нужно знать.

  • Событие срабатывает только при снятии публикации ресурса через контекстное меню документа в дереве ресурсов. Если вы уберёте галочку опубликован при редактировании документа на странице самого документа, ничего не произойдет.
OnLoadWebPageCache
  • core/model/modx/modrequest.class.php (270)

Запускается при загрузке ресурса из кэша. В MODX 2.3+ для доступа к свойствам ресурса можно использовать объект Event.

$modx->event->params['resource']->_content = 'Новый контент'; // Заменить содержание страницы
$modx->event->params['resource']->pagetitle = 'Новый заголовок'; // Изменить заголовок страницы
OnLoadWebDocument
  • core/model/modx/modrequest.class.php (132)
  • Параметры
    • К ресурсу можно обратится $modx->resource

Запускается после того как ресурс загружен, но перед тем как будут обработаны все теги. После отработки этого события, ресурс доступен в плагинах через $modx->resource, и сформированные данные можно изменять. Сообщения, которые возвращают плагины привязанные к этому событию, будут записаны в журнал ошибок MODX.

// Сделать ресурс некешируемым
$modx->resource->set('cacheable', 0);
// Или назначить ему другой шаблон
$modx->resource->set('template', 6);
OnManagerLogin
  • core/model/modx/processors/security/login.class.php (299)
  • Параметры
    • user (ссылка на объект modUser)
    • attributes
      • rememberme (запомнить пароль пользователя)
      • lifetime (время жизни сессии cookie для входа)
      • loginContext (ключ контекста в котором происходит вход)
      • addContexts (дополнительные контексты в которых осуществляется вход)

Запускается каждый раз, когда пользователь успешно входит в манагере после успешного выполнения любой операции проверки. Событие не влияет на процесс авторизации

OnManagerLogout
  • core/model/modx/processors/security/logout.class.php (59)
  • Параметры
    • user (ссылка на объект modUser, который вышел)
    • loginContext (ключ контекста откуда вышел)
    • addContexts (дополнительные контексты в которых осуществляется выход)

Запускается каждый раз, когда пользователь выходит из контекста. Сессия при этом удаляется.

OnSiteRefresh
  • core/model/modx/processors/system/clearcache.class.php (23)
  • manager/controllers/default/system/refresh_site.php (17)
  • Параметры
    • results (массив результатов)
    • partitions (массив результатов очистки)

Запускается каждый раз, когда кэш для всего сайта очищен.

OnUserChangePassword
  • core/model/modx/moduser.class.php (301)
  • Параметры
    • user (Ссылка на объект modUser)
    • newpassword (новый пароль)
    • oldpassword (старый пароль)

Запускается каждый раз, когда пользователь меняет пароль.

OnManagerPageBeforeRender
  • core/model/modx/modmanagercontroller.class.php (147)
  • Параметры
    • controller (экземпляр контроллера на текущей странице менеджера)

Запускается в контроллере менеджера, перед оформлением контента.

OnTemplateVarBeforeSave
  • core/model/modx/modtemplatevar.class.php (75)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • templateVar (экземпляр класса modTemplateVar)
    • cacheFlag (должно ли кэшироваться, по умолчанию $cacheFlag = null)

Загружается перед сохранением переменной шаблона в базе.

OnTemplateVarSave
  • core/model/modx/modtemplatevar.class.php (85)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • templateVar (экземпляр класса modTemplateVar)
    • cacheFlag (должно ли кэшироваться, по умолчанию $cacheFlag = null)

Загружается сразу после успешного сохранения шаблона переменной в базе.

OnTemplateVarBeforeRemove
  • core/model/modx/modtemplatevar.class.php (105)
  • Параметры
    • templateVar (экземпляр класса modTemplateVar)
    • cacheFlag (должно ли кэшироваться, по умолчанию $cacheFlag = true)

Загружается прямо перед удалением переменной шаблона.

OnTemplateVarRemove
  • core/model/modx/modtemplatevar.class.php (114)
  • Параметры
    • templateVar (экземпляр класса modTemplateVar)
    • cacheFlag (должно ли кэшироваться, по умолчанию $cacheFlag = true)

Загружается сразу после удаления переменной шаблона.

OnBeforeEmptyTrash
  • core/model/modx/processors/resource/emptyrecyclebin.class.php (29)
  • Параметры
    • ids (массив id_шников ресурсов, которые будут навсегда удалены)
    • resources (еще один массив сданными, на сколько я понял, там вообще все, что удалено, что задействовано. При вызове $resources "Журнал ошибок" сразу растолстеет на несколько мегабайт)

Загружается перед тем как корзина очистится.

OnBeforeManagerLogin
  • core/model/modx/processors/security/login.class.php (63)
  • Параметры
    • username (введенное имя пользователя)
    • password (введенный пароль)
    • attributes
      • rememberme (запомнить пароль пользователя)
      • lifetime (время жизни сессии cookie для входа)
      • loginContext (ключ контекста в котором происходит вход)
      • addContexts (дополнительные контексты в которых осуществляется вход)

Запускается перед тем, как процесс входа в систему запускается для пользователя, при входе в манагер. Можно использовать для запрета на вход.

OnBeforeManagerPageInit
  • core/model/modx/modmanagercontroller.class.php (125)
  • Параметры
    • action (массив текущих контроллеров)

Запускается перед управляющим контроллером и после проверки разрешений.

OnBeforePluginFormDelete
  • core/model/modx/processors/element/plugin/remove.class.php (16)
  • Параметры
    • plugin (ссылка на объект modPlugin)
    • id (id плагина)

Запускается перед тем как удалится плагин.

OnBeforePluginFormSave
  • core/model/modx/processors/element/plugin/create.class.php (25)
  • core/model/modx/processors/element/plugin/update.class.php (26)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • plugin (ссылка на объект modPlugin)
    • id (id плагина. Будет 0 для новых плагинов)

Запускается после отправки, но до того как плагин будет сохранен в менеджере.

OnBeforeSnipFormDelete
  • core/model/modx/processors/element/snippet/remove.class.php (16)
  • Параметры
    • snippet (ссылка на объект modSnippet)
    • id (id сниппета)

Запускается перед тем как удаляется сниппет.

OnBeforeSnipFormSave
  • core/model/modx/processors/element/snippet/update.class.php (24)
  • core/model/modx/processors/element/snippet/create.class.php (23)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • snippet (ссылка на объект modSnippet)
    • id (id сниппета. Будет 0 для новых.)

Запускается после отправки, но до того как сниппет будет сохранен в менеджере.

OnBeforeTempFormDelete
  • core/model/modx/processors/element/template/remove.class.php (16)
  • Параметры
    • template (ссылка на объект modTemplatе)
    • id (id шаблона.)

Запускается перед тем как шаблон удаляется.

OnBeforeTempFormSave
  • core/model/modx/processors/element/template/update.class.php (25)
  • core/model/modx/processors/element/template/create.class.php (24)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • template (ссылка на объект modTemplate)
    • id (id шаблона. Будет 0 для новых.)

Запускается после отправки, но до того как шаблон будет сохранен в менеджере.

OnBeforeTVFormDelete
  • core/model/modx/processors/element/tv/remove.class.php (16)
  • Параметры
    • tv (ссылка на объект modTemplateVar)
    • id (id тв.)

Запускается перед тем как шаблон удаляется.

OnBeforeTVFormSave
  • core/model/modx/processors/element/tv/create.class.php (31)
  • core/model/modx/processors/element/tv/update.class.php (31)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • tv (ссылка на объект modTemplateVar)
    • id (id ТВ. Будет 0 для новых.)

Запускается после отправки, но до того как ТВшка будет сохранена в менеджере.

OnBeforeUserActivate
  • core/model/modx/processors/security/user/activatemultiple.class.php (28)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • user (ссылка на объект modUser)
    • id (id пользователя)

Запускается перед тем как активировать юзверя.

OnBeforeUserFormDelete
  • core/model/modx/processors/security/user/delete.class.php (15)
  • Параметры
    • user (ссылка на объект modUser)
    • id (id пользователя)

Запускается перед тем как удаляется пользователь.

OnBeforeUserFormSave
  • core/model/modx/processors/security/user/update.class.php (16)
  • core/model/modx/processors/security/user/create.class.php (17)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • user (ссылка на объект modUser)
    • id (id пользователя. Будет 0 для новых.)

Запускается после отправки, но до того как пользователь будет сохранен.

OnBeforeWebLogin
  • core/model/modx/processors/security/login.class.php (63)
  • Параметры
    • username (имя пользователя)
    • password (пароль)
    • attributes
      • rememberme (запомнить пароль пользователя)
      • lifetime (время жизни сессии cookie для входа)
      • loginContext (ключ контекста в котором происходит вход)
      • addContexts (дополнительные контексты в которых осуществляется вход)

Запускается перед тем как пользователь логинится (не в манагере).

OnCategoryBeforeRemove
  • core/model/modx/modcategory.class.php (92)
  • Параметры
    • category (cсылка на объект modCategory)
OnCategoryBeforeSave
  • core/model/modx/modcategory.class.php (56)
  • Параметры
    • category (cсылка на объект modCategory)
    • id (id категории)

Запускается перед тем как сохраняется категория.

OnCategoryRemove
  • core/model/modx/modcategory.class.php (115)
  • Параметры
    • category (cсылка на объект modCategory)

Запускается после того как категория будет удалена.

OnCategorySave
  • core/model/modx/modcategory.class.php (74)
  • Параметры
    • category (cсылка на объект modCategory)

Запускается после того как категория будет сохранена.

OnChunkBeforeRemove
  • core/model/modx/modchunk.class.php (71)
  • Параметры
    • chunk (cсылка на объект modChunk)

Запускается перед тем как чанк удаляется.

OnChunkBeforeSave
  • core/model/modx/modchunk.class.php (39)
  • Параметры
    • chunk (cсылка на объект modChunk)

Запускается перед тем как чанк сохраняется.

OnChunkRemove
  • core/model/modx/modchunk.class.php (80)
  • Параметры
    • chunk (cсылка на объект modChunk)

Запускается после того как чанк удален.

OnChunkSave
  • core/model/modx/modchunk.class.php (49)
  • Параметры
    • chunk (cсылка на объект modChunk)

Запускается после того как чанк сохранен.

OnContextBeforeRemove
  • core/model/modx/modcontext.class.php (329)
  • Параметры
    • context (cсылка на объект modContext)

Запускается перед тем как контекст будет удален.

OnContextBeforeSave
  • core/model/modx/modcontext.class.php (355)
  • Параметры
    • context (cсылка на объект modContext)
    • mode (либо новый либо обновить, определение)

Запускается перед тем как контекст будет сохранен.

OnContextFormPrerender
  • manager/controllers/default/context/update.class.php (100)
  • Параметры
    • key (ключ контекста)
    • context (cсылка на объект modContext)
    • mode (либо новый либо обновить, определение)

Запускается перед тем как загрузится форма редактирования.

OnContextFormRender
  • manager/controllers/default/context/update.class.php (113)
  • Параметры
    • key (ключ контекста)
    • context (cсылка на объект modContext)
    • mode (либо новый либо обновить, определение)

Запускается после того как форма редактирования загружена.

OnContextRemove
  • core/model/modx/modcontext.class.php (338)
  • Параметры
    • context (cсылка на объект modContext)

Запускается после того как контекст удаляется.

OnContextSave
  • core/model/modx/modcontext.class.php (365)
  • Параметры
    • context (cсылка на объект modContext)
    • mode (либо новый либо обновить, определение)

Запускается каждый раз когда контекст сохраняется.

OnEmptyTrash
  • core/model/modx/processors/resource/emptyrecyclebin.class.php (60)
  • Параметры
    • ids (массив удаленных id ресурсов)
    • num_deleted (количество удаленных ресурсов)

Запускается после того как корзина очищена.

OnFileManagerUpload
  • core/model/modx/sources/mods3mediasource.class.php (662)
  • core/model/modx/sources/modfilemediasource.class.php (748)
  • Параметры
    • files (массив файлов из PHP массива $_files)
    • directory (ссылка на объект modDirectory )
    • source (объект modMediaSource)

Запускается после того как все файлы загружены в диспетчер.

OnHandleRequest
  • core/model/modx/modmanagerrequest.class.php (116)
  • core/model/modx/modrequest.class.php (69)

Срабатывает в самом начале обработки запроса (request). Аналогичную функцию выполняет «OnMODXInit». Большой разницы между этими событиями нет — они запускаются друг за другом, только «OnMODXInit» запускается в классе modX, а «OnHandleRequest» — в классе modRequest, который загружается сразу же после инициализации MODX.

Данное событие можно использовать для маршрутизации запроса — перенаправлять пользователя на определенную страницу в зависимости от условий (аналогично .htaccess).

Если используется режим дружественных URLs, то происходит поиск идентификатора ресурса с соответствующим алиасом. Если такой не найден, то идёт переадресация на страницу ошибок с вызовом события OnPageNotFound.

OnInitCulture
  • core/model/modx/modx.class.php (2370)

При рендере страницы запускается первым. Происходит после установки языковой принадлежности и формирования лексического массива.

OnManagerAuthentication
  • core/model/modx/processors/security/login.class.php (236)
  • Параметры
    • user (ссылка на объект modUser)
    • password (пароль)
    • rememberme (запомнить пользователя, cookie)
    • lifetime (время жизни сессии cookie)
    • loginContext (ключ контекста)
    • addContexts (дополнительные контексты где происходит авторизация)

Запускается перед тем как пользователь авторизуется, и его сессия добавить в менеджер. Это событие используется, чтобы позволить войти

OnManagerLoginFormPrerender
  • manager/controllers/default/security/login.class.php (44)

Запускается перед тем как форма входа появится для пользователя.

OnManagerPageAfterRender
  • core/model/modx/modmanagercontroller.class.php (190)
  • Параметры
    • controller (экземпляр контроллера текущей страницы менеджера)

Запускается в контроллере менеджера после обработки контента, но до того как он появится.

OnManagerPageInit
  • core/model/modx/modmanagerrequest.class.php (127)
  • Параметры
    • action (id текущего загруженного действия)

Запускается перед тем как страница загрузится в менеджере.

OnPageNotFound
  • core/model/modx/modx.class.php (1174)
  • Параметры
    • response_code (код ответа для отправки, по умолчанию "HTTP/1.1 404 Not Found")
    • error_type (тип. По умолчанию 404)
    • error_header (заголовок, по умолчанию "HTTP/1.1 404 Not Found")
    • error_pagetitle (pagetitle на странице)
    • error_message (сообщение на странице ошибки)

Запускается когда пользователь попадает на ресурс id которого не найден. Формируется ответ «404 Page not found» и пользователь перенаправляется на страницу, указанную в системных параметрах (ключ error_page)

OnPageUnauthorized
  • core/model/modx/modx.class.php (1198)
  • Параметры
    • response_code (код ответа для отправки, по умолчанию "HTTP/1.1 401 Unauthorized")
    • error_type (тип. По умолчанию 401)
    • error_header (заголовок, по умолчанию "HTTP/1.1 401 Unauthorized")
    • error_pagetitle (pagetitle на странице)
    • error_message (сообщение на странице ошибки)

Запускается когда пользователь попадает на закрытые страницы к которым у него нет доступа. MODX вернёт ответ с кодом «HTTP/1.1 401 Unauthorized» и перенаправит пользователя на страницу для не авторизованных пользователей, указанную в системных настройках (ключ unauthorized_page).

OnParseDocument
  • core/model/modx/modparser.class.php (229)
  • core/model/modx/modparser095.class.php (88)
  • Параметры
    • ссылка на контент доступна так $modx->documentOutput

Событие срабатывает для каждого тега MODX, т.е. столько раз, сколько тегов будет на странице. В плагине содержание тега доступно через переменную $content.

OnPluginBeforeRemove
  • core/model/modx/modplugin.class.php (70)
  • Параметры
    • plugin (ссылка на объект modPlugin)

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

OnPluginBeforeSave
  • core/model/modx/modplugin.class.php (39)
  • Параметры
    • plugin (ссылка на объект modPlugin)

Событие срабатывает перед тем как сохранится плагин.

OnPluginBeforeSave
  • core/model/modx/modplugin.class.php (39)
  • Параметры
    • plugin (ссылка на объект modPlugin)

Событие срабатывает перед тем как сохранится плагин.

OnPluginEventRemove
  • core/model/modx/modpluginevent.class.php (59)
  • Параметры
    • id (id объекта modPluginEvent)
    • pluginEvent (Ссылка на объект modPluginEvent)

Событие срабатывает после того как плагин отсоединится от события.

OnPluginFormDelete
  • core/model/modx/processors/element/plugin/remove.class.php (17)
  • Параметры
    • id (id плагина)
    • chunk (ссылка на объект modPlugin)

Событие срабатывает после того как плагин будет удален.

OnPluginFormPrerender
  • manager/controllers/default/element/plugin/create.class.php (78)
  • manager/controllers/default/element/plugin/update.class.php (129)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • id (id плагина. Будет 0 для новых)
    • plugin (ссылка на объект modPlugin. Будет иметь значение NULL для новых плагинов)

Запускается до изменения плагина, но JS подгружается. Можно использовать для визуализации пользовательских JavaScript в mgr.

OnPluginFormRender
  • manager/controllers/default/element/plugin/create.class.php (91)
  • manager/controllers/default/element/plugin/update.class.php (143)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • id (id плагина. Будет 0 для новых)
    • plugin (ссылка на объект modPlugin. Будет иметь значение NULL для новых плагинов)

Запускается во время рендеринга формы.

OnPluginFormSave
  • core/model/modx/processors/element/plugin/create.class.php (26)
  • core/model/modx/processors/element/plugin/update.class.php (27)
  • Параметры
    • mode (либо новый либо обновить, определение)
    • id (id плагина)
    • plugin (ссылка на объект modPlugin)

Запускается после того, как плагин будет сохранен в менеджере.

OnPluginRemove
  • core/model/modx/modplugin.class.php (79)
  • Параметры
    • plugin (ссылка на объект modPlugin)

Запускается после того, как плагин будет удален.

OnPluginSave
  • core/model/modx/modplugin.class.php (49)
  • Параметры
    • plugin (ссылка на объект modPlugin)

Запускается после того, как плагин будет сохранен.

OnPluginSave
  • core/model/modx/modplugin.class.php (49)
  • Параметры
    • plugin (ссылка на объект modPlugin)

Запускается после того, как плагин будет сохранен.

OnPropertySetBeforeRemove
  • core/model/modx/modpropertyset.class.php (218)
  • Параметры
    • propertySet (ссылка на объект modPropertySet)

Запускается перед тем как набор параметров будет удален.

OnPropertySetBeforeSave
  • core/model/modx/modpropertyset.class.php (192)
  • Параметры
    • propertySet (ссылка на объект modPropertySet)

Запускается перед тем как набор параметров будет сохранен.

OnPropertySetRemove
  • core/model/modx/modpropertyset.class.php (227)
  • Параметры
    • propertySet (ссылка на объект modPropertySet)

Запускается после того, как набор параметров будет удален.

OnPropertySetSave
  • core/model/modx/modpropertyset.class.php (202)
  • Параметры
    • propertySet (ссылка на объект modPropertySet)

Запускается после того, как набор параметров будет сохранен.

OnResourceGroupBeforeRemove
  • Параметры
    • group (ссылка на объект modResourceGroup)

Запускается перед тем как группа ресурсов удаляется.

OnResourceGroupBeforeSave
  • core/model/modx/modresourcegroup.class.php (27)
  • Параметры
    • group (ссылка на объект modResourceGroup )

Запускается перед тем как группа ресурсов сохраняется.

OnResourceGroupRemove
  • core/model/modx/modresourcegroup.class.php (63)
  • Параметры
    • group (ссылка на объект modResourceGroup )

Запускается после того как группа ресурсов удаляется.

OnResourceGroupSave
  • core/model/modx/modresourcegroup.class.php (38)
  • Параметры
    • group (ссылка на объект modResourceGroup )

Запускается после того как группа ресурсов сохраняется.

OnRichTextBrowserInit
  • manager/controllers/default/browser/index.class.php (42)

Используется для обработки MODx.Browser's реализации файловой системы для пользовательских RTEs.

OnRichTextEditorInit
  • core/model/modx/processors/element/tv/renders/web/output/richtext.class.php (22)
  • manager/controllers/default/element/chunk/update.class.php (149)
  • manager/controllers/default/element/chunk/create.class.php (22)
  • manager/controllers/default/resource/resource.class.php (205)
  • manager/controllers/default/element/chunk/create.class.php (86)
  • Параметры
    • editor (указанный редактор)
    • elements (массив элементов RTE)

Может быть использован любой редактор.

OnRichTextEditorRegister
  • manager/controllers/default/resource/resource.class.php (197)
  • core/model/modx/processors/system/rte/getlist.class.php (11)

Срабатывает при выборе любого выпадающего списка редакторов. Например в системных настройках 'which_editor', вродебы

OnSiteSettingsRender
  • manager/controllers/default/system/settings.class.php (43)

Срабатывает до того, как страница с настройками загрузится.

OnUserActivate
  • core/model/modx/processors/security/user/activatemultiple.class.php (44)
  • Параметры
OnUserBeforeRemove
  • core/model/modx/moduser.class.php (117)
  • Параметры
    • user (ссылка на объект modUser )

Срабатывает перед тем как пользователь будет удален.

OnUserBeforeSave
  • core/model/modx/moduser.class.php (91)
  • Параметры
    • user (ссылка на объект modUser)
    • mode (либо новый либо обновить, определение)

Срабатывает перед тем как пользователь будет сохранен.

OnUserFormDelete
  • core/model/modx/processors/security/user/delete.class.php (16)
  • Параметры
    • user (ссылка на объект modUser)
    • id (id пользователя)

Срабатывает после того как пользователь будет удален.

OnUserFormSave
  • core/model/modx/processors/security/user/create.class.php (18)
  • core/model/modx/processors/security/user/update.class.php (17)
  • Параметры
    • user (ссылка на объект modUser)
    • id (id пользователя)
    • mode (либо новый либо обновить, определение)

Срабатывает после того как пользователь будет создан и обновлен через форму.

OnUserNotFound
  • core/model/modx/processors/security/login.class.php (105)
  • Параметры
    • username (указанное имя пользователя)
    • password (указанный пароль)
    • attributes (массив параметров)

Срабатывает когда пользователь не найден при авторизации.

OnUserRemove
  • core/model/modx/moduser.class.php (126)
  • Параметры
    • user (ссылка на объект modUser)

Срабатывает после того как пользователь удален.

OnUserSave
  • core/model/modx/moduser.class.php (101)
  • Параметры
    • user (ссылка на объект modUser)
    • mode (либо новый либо обновить, определение)

Срабатывает после того как пользователь сохранен.

OnMODXInit
  • core/model/modx/modx.class.php (527)
  • Параметры
    • contextKey
    • options

Срабатывает в конце инициализации MODX после загрузки всех необходимых сервисов (modError, modLexicon, modRegistry, cacheManager), загрузки пакетов из ExtensionPackages и инициализации сессии, в которой определяется пользователь. Это событие запускается в классе modX.

OnWebAuthentication
  • core/model/modx/processors/security/login.class.php (236)
  • Параметры
    • user (ссылка на объект modUser)
    • password (пароль)
    • rememberme (запомнить пользователя, cookie)
    • lifetime (время жизни сессии cookie)
    • loginContext (ключ контекста)
    • addContexts (дополнительные контексты где происходит авторизация)

Запускается перед тем как пользователь авторизуется, и его сессия добавить в менеджер. Это событие используется, чтобы позволить войти

OnWebLogin
  • core/model/modx/processors/security/login.class.php (299)
  • Параметры
    • user (ссылка на объект modUser)
    • attributes
      • rememberme (запомнить пароль пользователя)
      • lifetime (время жизни сессии cookie для входа)
      • loginContext (ключ контекста в котором происходит вход)
      • addContexts (дополнительные контексты в которых осуществляется вход)

Запускается каждый раз, когда пользователь успешно входит в не в mgr после успешного выполнения любой операции проверки. Событие не влияет на процесс авторизации.

OnWebLogout
  • core/model/modx/processors/security/logout.class.php (59)
  • Параметры
    • user (ссылка на объект modUser, который вышел)
    • loginContext (ключ контекста где произошел выход)
    • addContexts (дополнительные контексты в которых осуществился выход)

Запускается каждый раз, когда пользователь выходит из контекста. Сессия при этом удаляется.

OnWebPagePrerender
  • core/model/modx/modresponse.class.php (90, 111)

Запускается после того, как все теги на странице обработаны, но еще не переданы в браузер. На данном этапе можно обработать содержание страницы, например, заменить запрещённые слова. 

$words = array("козёл", "сволочь"); // слова, которые будут заменены
$output = &$modx->resource->_output; // получаем доступ к содержанию страницы
$output = str_replace($words,"<b>нехороший человек</b>",$output);  // заменяем слова
OnWebPageComplete
  • core/model/modx/modx.class.php (2594)
  • Параметры
    • к ресурсу можно обратится $modx->resource.

Событие запускаемое последним. Оно срабатывает, когда страница уже отправлена в браузер и подготовленный ресурс сохранен в кэш.

OnWebPageInit
  • core/model/modx/modrequest.class.php (112)

Срабатывает в конце обработки запроса перед подготовкой ответа. Статус сайта уже определён и идентификатор ресурса (id) найден (он доступен в $modx->resourceIdentifier).

После этого события MODX загружает ресурс и проверяет права доступа к нему для текущего пользователя. И если проверки не прошли, то запускается одно из 2-х следующих событий — «OnPageNotFound» или «OnPageUnauthorized».

Пример

В качестве примера, подключим собственный файл с классом перед тем как произошла окончательная инициализация MODX.

Идем на вкладку элементы, нажимаем кнопку «Новый плагин», даем ему имя и указываем следующий код. На вкладке «системные события» ставим галку напротив OnMODXInit.

switch ($modx->event->name) {
    case 'OnMODXInit':
        // Укажем путь до файла
        $file = MODX_CORE_PATH . 'classes/my.class.php';
        if (file_exists($file)) {
            require_once $file;
        }
        break;
}

Пример плагина прослушивающего более чем 1 событие:

$eventName = $modx->event->name;
switch($eventName) {
    case 'OnWebPageInit':
        /* do something */
        break;
    case 'OnWebPagePrerender':
        /* do something else */
        break;
}
tnx

За перевод событий списка Спасибо — pitrooo

За некоторые описания событий — modZone