Шаблонизация вывода сниппета

Здравствуйте. Укажите пожалуйста на ошибку. Сниппет ничего не возвращает.

Сниппет:
$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>`]]
Виталий Барышников
09 ноября 2015, 01:34
modx.pro
1 047
0

Комментарии: 5

Виталий Барышников
09 ноября 2015, 04:53
0
Отвечаю себе отсюда:
$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;
}
Но если кто-то прокомментирует, почему так, то будет понятнее.
    Антон Пастухов
    09 ноября 2015, 13:54
    0
    В данном случае нет смысла подключать pdoTools. Ваш изначальный код на первый взляд выглядит правильно. Можно предположить, что $videoSrc все же empty. Добавьте к своему if-у еще пару строчек:

    if(!empty($videoSrc))
    {
        // ...	
    } else {
    	return "Ничего не найдено!";
    }
    … и посмотрите, что будет.
      Илья Уткин
      09 ноября 2015, 18:22
      +2
      Дело в том, что MODX передает в сниппет параметр как он есть (не важно, стоит там @INLINE, @FILE или прочее). А вот в pdoTools Василий добавил функцию, которая может из этой строки создать временный чанк, заполнить его данными и вывести.

      Поэтому надо подключить pdoTools. Но, с другой стороны, можно просто вынести этот код в настоящий чанк и передавать в сниппет уже его имя. Тогда сработает и стандартный функионал MODX
        Антон Пастухов
        09 ноября 2015, 21:49
        0
        Даже в этом случае сниппет должен возвращать inline-содержимое, пусть с неразобранными тегами MODx. Но он, по словам топикстартера, не возвращает ничего, а значит, проблема не в отсутствии pdoTools.
          Илья Уткин
          09 ноября 2015, 23:02
          +1
          MODX пытается найти чанк с именем
          @INLINE  <div class="entry-video entry-video-4x3">
          		<iframe width="560" height="315" src="[[+videoSrc]]" frameborder="0" allowfullscreen></iframe>
          	  </div>
          Он его, к сожалению, не находит и возвращает пустую строку.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5