MODx Evo парсить сниппет в чанке

Прочии темы

Модератор: Aleksandr

Аватара
Автор темы
LILUS M
Старшина
Старшина
Сообщения: 128
Репутация: 9
С нами: 5 лет 1 месяц

MODx Evo парсить сниппет в чанке

Сообщение #1 LILUS » 31 января 2014, 19:28

Wed, 06 Feb 2013 16:58:20 +0400


MODx логотип

Очень часто сталкиваюсь с задачей при написании своих сниппетов и модулей к MODx Evolution. Чанки очень удобно использовать как шаблоны для вывода результата работы своего сниппета. Но есть одна большая проблема, с которой, судя по всему, сталкиваюсь не только я.


Если в чанке стоит вызов сниппета, то вызвав $modx->getChunk('chunkname') мы получим код вызова сниппета, а не результат его работы, как ожидается.

Готового решения в сети я не нашел. А для себя решил сохранить промежуточное решение-костыль. В будущем нужно будет доработать его. Либо разобраться в устройстве MODx настолько, чтобы парсить эти чертовы сниппеты системными средствами, либо написать функцию, которая умеет это делать и просто включать ее когда нужно.


А пока что костыль выглядит так:


	$test = $modx->parseDocumentSource($modx->getChunk('ChunkName'));
$test = $modx->evalSnippets($test);


В первой строке мы получаем содержимое чанка и отдаем его в функцию parseDocumentSource. Там происходит подстановка разных переменных. Например, [*id*]. А затем вызываем функцию, которая призвана искать в тексте, переданном в аргументе сниппеты и выполнять их, а результат — возвращать. evalSnippets.


Все бы хорошо, но evalSnippets почему-то умеет искать и выполнять только кэшируемые сниппеты. То есть вызов [!Snippet!] не распознается, а вот [[Snippet]] будет выполнен.


Если у кого-то есть решение лучше — буду рад увидеть.


! ! !


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Прочее»

Кто сейчас на форуме

Сейчас этот раздел просматривают: 1 гость
Боты: Google Adsense [Bot], Yandex [Direct]