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

Прочии темы

Moderator: Aleksandr

Avatar
Topic author
LILUS M
Старшина
Старшина
Posts: 136
With us: 7 years 5 months

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

Post #1by LILUS » 31 Jan 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]] будет выполнен.


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


! ! !


  • Similar Topics
    Replies
    Views
    Last post

Return to “Прочее”

Who is online

Users browsing this forum: 1 guest
Bots: Google [Bot]