Запуск сниппета из фронтенда. Плагин Evo.

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

На данный момент существует два основных способа запуска сниппетов из фронта. Первый, самый простой — создание документа с шаблоном _blank и вставкой туда нужного сниппета. Второй вариант — подключение к внешнему файлу парсер Modx. Оба решения вполне рабочие, но не без недочетов. Предлагаю свое решение, основанное на замечательном событии OnPageNotFound. Стоит отметить, что данное событие отвечает не просто за вывод страницы 404 ошибки, а по-сути расширяет функционал Modx при работе с адресной строкой из фронта.

Итак, создаете плагин <strong>RunSnippetFront</strong>, в настройках плагина ставим галочку напротив "OnPageNotFound".

В содержимое вставляем:

//<?php
$table = $modx->getFullTableName('site_snippets');
$sn = $modx->db->escape($_REQUEST['q']);
$id = $modx->db->getValue('Select `id` from '.$table.' where `name`="'.$sn.'" and `properties` like "%shared%"');
if ($id>0)
{
$res = $modx->runSnippet($sn);
exit($res);
}

Теперь, для того чтобы запустить сниппет из фронта необходимо на вкладке свойства сниппета в поле «Параметры по умолчанию» добавить строчку:
{«shared»: «1» }. Все, теперь ваш сниппет будет запускаться из адресной строки по его имени. Т.е. если ваш сниппет называется SnippetName, то для его запуска достаточно обратиться к нему по адресу: site.com/SnippetName

Постараюсь, как выйду из аврала, собрать все свои маленькие решения в один пакет. Ибо несмотря на их маленький вес, эти малявки зачастую очень хорошу упрощают жизнь)

 

Оставить комментарий