ylarus
23 нояб. 2014 г., 17:43

Рекомендуемые товары

У меня задача сделать рекомендуемые товары. Не получается вывести картинки и название ссылки по указанным id. Выводит информацию только по текущему id страницы. Адреса ссылок выводит правильные. Подскажите пож. как сниппете это сделать. У меня TV поле с id страниц через запятую. И вызов скиппета.
<?php /* ShowDropdown сниппет */ $items = $modx->getOption('items', $scriptProperties, 'Нет данных для показа'); $multiple = $modx->getOption('multiple', $scriptProperties, false); /* Задать Tpl для каждого вывода опции */ $tpl = '<a href="[[~[[+item]]]]">[[*pagetitle]]</a><img src="[[*image]]"}" title="[[*pagetitle]]" style="max-height:230px; max-width:175px;" align=""/><br />'; if($items){ /* Конвертировать значения через запятую в массив */ $items = explode(',', $scriptProperties['items']); /* Создание внутреннего HTML */ foreach ($items as $item) { $output .= "\n" . str_replace('[[+item]]', trim($item), $tpl); } } /* возвратить законченный HTML */ return $output;
Код скиппета http://joxi.ru/Vm6vDwqh4vNYmZ
Чтобы вы знали, теги типа [[* - это всегда только текущий документ. 2. Учите MODX-синтаксис.
Николай правильно написал, как modx поймет, что image и pagetitle надо для страниц с id равным items выводить? вам надо для каждого ресурса с соответствующем id image и pagetitle получить.
спасибо за подсказки. буду пробовать)
ааа)) ура ура все получись)) А то я совсем уже отчаялась. Думала что совсем все неправильно). Я как и посоветовали по каждому id все вывела через $modx->getObject('modResource', trim($item)); Почтила немного док и вывела tvs через getObject('modTemplateVarResource'. Еще раз всем спасибо))
Хорошо, что получилось, но рано еще останавливаться, код надо еще оптимизировать. Для начала в этом:
Я как и посоветовали по каждому id все вывела через $modx->getObject('modResource', trim($item)); Почтила немного док и вывела tvs через getObject('modTemplateVarResource'. Еще раз всем спасибо))
1. Получаем объект документа. $doc = $modx->getObject('modResource', trim($item)); 2. С этим объектом можно не только его поля получить (типа $doc->id, $doc->pagetitle и т.п.), но и значения TV-полей. $value = $doc->getTVValue($tv_id or $tv_name);
Ок спасибо за подсказку. Поняла)

Добавить комментарий