Как в ModX Revo получить готовую страницу из сниппета?

Здравствуйте. Помогите вывести страницу с примененным к ней шаблоном (не чанком!) из сниппета?
Ситуация такая: имеется шаблон (Template), который содержит в себе не всю страницу, а кусок кода - маленький блок без заголовков и т.п. Буду называть его "подшаблон" :)
Я создаю ресурс (страницу) и выбираю этот подшаблон в качестве шаблона. На этот ресурс не нужно попадать из адресной строки.
В основном шаблоне (страница-родитель) в конкретном месте я вставляю сниппет, который должен вывести эту страницу (дочерняя) в готовом виде с примененным шаблоном-подшаблоном (который указан в редакторе ресурса, а не в параметрах сниппета!). Но беда в том, что плэйсхолдеры заменяются значениями родительской страницы. Как сделать чтобы плейсхордеры заменялись на значения чилдрена?

Код сниппета:
// узнаем id страницы вызвавшей сниппет
$parentPageId = $modx->resource->get('id');

// определяем id-ы всех дочерних ресурсов и перебериаем их
$childrenPageIds = $modx->getChildIds($parentPageId);
foreach($childrenPageIds as $index => $childrenPageId)
{
	  // получаем ресурс
    	$pageObject = $modx->getObject('modResource', array(
        		'published' => 1,
        		'id' => $childrenPageId
    	));

	    // получаем шаблон ресурса
    	$templateObject = $modx->getObject('modTemplate', $pageObject->template);

    	// выводим
    	return $templateObject->content;
}


п.с. всю эту ерунду я делаю для того чтобы можно было на главной странице выводить все дочерние страницы в виде блоков с применением разных стилей. Может быть есть более правильное решение? Т.е. нужно создать страницу так, чтобы она была не ресурсом, а блоком в родительской странице и у этого блока может быть применен один из доступных стилей.

п.п.с я, конечно, понимаю, что можно заменить все плейсхолдеры значениями из $pageObject с помощью str_replace(), но как то это будет выглядит не очень =)
  • Вопрос задан
  • 1153 просмотра
Пригласить эксперта
Ответы на вопрос 1
@7rows
Frontend Разработчик / Vue / JS / TS / CSS
А чем не нравится Doclister или MultiTV??
P.S. не совсем понятна ваша задача=(
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы