Prepare в DocLister

Всем привет

очередной вопрос по prepare

Вывод на страницу каталог, каждого товара должна быть картинка, она лежит в папке images/id (id равен id документа)

и у меня должен быть сниппет, который для каждого документа выведет картинку из папки

1. В tpl diclister я не могу вызвать свой сниппет с номером определенного документа
2. я пытаюсь прописать через prepare, но ен понимаю, как в мой сниппет с картинками передать id нужного документа:
[!DocLister? 
&parents=`8` 
&prepare=`one_photo`
&tvList=`price`
&depth=`3`
&idType=`parents`
&showParent=`0`
&tpl=`@CODE 
<img src="[+preview_photo+]" width="255"alt="" />
<h2>[+price+]</h2>
<p>[+pagetitle+]-[+id+]</p>


one_photo:
<?php
$dir = "test/uploads/".$papka."/";

  $indir = array_filter(scandir($dir), function($item) {
    return !is_dir($dir . $item);
  });

  foreach ($indir as $file) 
    $files[$file] = filemtime("$dir/$file");

  asort($files);
  $files = array_keys($files);

  if (!empty($files))
 
$i = 0; // Задаем переменную

foreach($files as $value) {

	$i++; // С каждым обходом увеличиваем переменную на 1
	
	if($i > 1) {
		
		break; // При достижении i > 1 останавливаем выборку
		
	}
$data['preview_photo']	=$dir.$value;
return $data;
	
}


как вместо $papka передать $id?

Спасибо

2 комментария

avatar
Как id взять в prepare, то можно взять из $data['id']. Если нужно просмотреть всё содержимое массива $data, то можно использовать конструкцию
$modx->logEvent(123, 1, print_r($data, true), 'Массив $data');
И смотреть в логе после выполнения сниппета
Комментарий отредактирован 2020-03-22 16:36:02 пользователем media_kot
avatar
большое спасибо
$data['id'] не подумал что так можно сделать
все получилось
Комментарий отредактирован 2020-03-22 17:52:26 пользователем gregst
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.