Информационный портал

Информационно-новостной портал

Новости рекламы и маркетинга. Новости Интернета.
Море полезной информации на сайте RetailDepartment.ru
Поделиться ссылкой с друзьями

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

Twitter
Нравится
RedLine
MODx Evo парсить сниппет в чанке

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

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

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

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

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

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

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

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

Понравилась статья? Поставь плюс один!

Источник: http://feedproxy.google.com/~r/Shamansblog/~3/NygTEE_BYw0/modx-snippet-in-chunk-parse

Add comment

Правила добавления комментариев


Security code
Refresh

Download SocComments v1.3