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

Description: Прочии темы
Moderator: Aleksandr

LILUS M
Topic author, Старшина
Старшина
Avatar
LILUS M
Topic author, Старшина
Старшина
Posts: 136
Joined: 2 May 2013
With us: 11 years 5 months

#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]] будет выполнен.


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



Return to “Прочее”

Who is online (over the past 5 minutes)

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