Шаблонизация вывода сниппета
Здравствуйте. Укажите пожалуйста на ошибку. Сниппет ничего не возвращает.
Сниппет:
Сниппет:
$resource = $modx->getObject('modResource',$resId);
$prop = $resource->get('properties');
$videoSrc = $prop['first_video_src'][0]; // это выводится
if(!empty($videoSrc))
{
$videoTpl = $modx->getOption('videoWrapperTpl',$scriptProperties,'ResourceItem'); // это выводится
$output = $modx->getChunk($videoTpl, array('videoSrc' => $videoSrc)); // что-то тут не то
return $output;
}
Вызов:[[!getImgSliderVideo?
&resId=`[[+id]]`
&videoWrapperTpl=`@INLINE
<div class="entry-video entry-video-4x3">
<iframe width="560" height="315" src="[[+videoSrc]]" frameborder="0" allowfullscreen></iframe>
</div>`]]
Комментарии: 5
Отвечаю себе отсюда:
$resource = $modx->getObject('modResource',$resId);
$prop = $resource->get('properties');
$videoSrc = $prop['first_video_src'][0];
if(!empty($videoSrc))
{
$videoTpl = $modx->getOption('videoWrapperTpl',$scriptProperties,'ResourceItem');
$pdo = $modx->getService('pdoTools'); // а вот где собака зарыта
$output = $pdo->getChunk($videoTpl, array('videoSrc' => $videoSrc)); // и тут правим на pdo
return $output;
}
Но если кто-то прокомментирует, почему так, то будет понятнее.
В данном случае нет смысла подключать pdoTools. Ваш изначальный код на первый взляд выглядит правильно. Можно предположить, что $videoSrc все же empty. Добавьте к своему if-у еще пару строчек:
if(!empty($videoSrc))
{
// ...
} else {
return "Ничего не найдено!";
}
… и посмотрите, что будет.
Дело в том, что MODX передает в сниппет параметр как он есть (не важно, стоит там @INLINE, @FILE или прочее). А вот в pdoTools Василий добавил функцию, которая может из этой строки создать временный чанк, заполнить его данными и вывести.
Поэтому надо подключить pdoTools. Но, с другой стороны, можно просто вынести этот код в настоящий чанк и передавать в сниппет уже его имя. Тогда сработает и стандартный функионал MODX
Поэтому надо подключить pdoTools. Но, с другой стороны, можно просто вынести этот код в настоящий чанк и передавать в сниппет уже его имя. Тогда сработает и стандартный функионал MODX
Даже в этом случае сниппет должен возвращать inline-содержимое, пусть с неразобранными тегами MODx. Но он, по словам топикстартера, не возвращает ничего, а значит, проблема не в отсутствии pdoTools.
MODX пытается найти чанк с именем
@INLINE <div class="entry-video entry-video-4x3">
<iframe width="560" height="315" src="[[+videoSrc]]" frameborder="0" allowfullscreen></iframe>
</div>
Он его, к сожалению, не находит и возвращает пустую строку.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.