EVO 1.0.13 Docs
Menu [#] EVO 1.0.13 Docs Информация Описание Терминология Develop Tags API DBAPI SystemVariables MMrules Extras Snippets Plugins Modules Packages Полезности Уроки Готовые решения Ссылки SimpleGallery Вывод изображений Вывод списка галерей Генерация превью при загрузке Разработчикам directResize Extras: Plugins Wednesday, June 22, 2016 Плагины в MODx EVO Что такое плагин? Плагины, как и сниппеты, представляют собой фрагменты php-кода, которые имеют доступ к API MODx. Однако большая разница в том, что сниппет исполняется там, где мы его вызываем, а плагины связаны с определенными системными событиями . При запросе страницы MODx, в процессе синтаксического анализа этой страницы в определенных точках происходят разные системные события. И плагин может быть привязан к одному или нескольким из этих событий для выполнения требуемой функции. Плагины не ограничивается только обработкой для вывода на фронтэнд - есть много событий, которые доступны и в админке MODx. Примеры плагинов Плагины могут применяться во множестве случае, ниже даны несколько примеров: Пример 1: Фильтр слов Описание: Фильтрует слова в документе перед его отображением Системное событие: OnWebPagePrerender Код плагина $words = array("snippet", "template"); // слова для фильтрации $e = &$modx->Event; switch ($e->name) { case "OnWebPagePrerender": $o = &$modx->documentOutput; // получаем ссылку на documentOutput $o = str_replace($words,"
[filtered]",$o); // заменяем слова break; default : return; // остановка здесь - эта строка очень важна break; } Пример 2: Перенаправление, если страница не существует Описание: Перенаправляет посетителя на выбранный документ и отправляет сообщение менеджеру Системное событие: OnPageNotFound Конфигурация плагина: &pg=ErrorPage;int; &mid=MailTo;string; Код плагина $e = &$modx->Event; switch ($e->name) { case "OnPageNotFound": if(!$pg) $modx->sendErrorPage(); else { if ($mid) { // отправляет сообщение в локальный ящик менеджера $docid = $modx->documentIdentifier; $subject = "Страница не найдена"; $msg = "Кто-то пытался получить доступ к документу с id $docid"; $modx->sendAlert("Ошибка",$mid,0,$subject,$msg,0); } $url=$this->makeUrl($pg); $this->sendRedirect($url, 1); exit; } break; default : return; // остановка здесь break; } Важно! Несмотря на то, что плагины пишутся на php, код плагина не должен содержать открывающего/закрывающего тега php .