ylarus 23 ноября 2014 1 8
У меня задача сделать рекомендуемые товары. Не получается вывести картинки и название ссылки по указанным 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;

8 комментариев
ylarus1
ylarus 23 ноября 2014г в 21:44 #
Код скиппета
http://joxi.ru/Vm6vDwqh4vNYmZ
Fi1osof1
Fi1osof 23 ноября 2014г в 22:39 #
Чтобы вы знали, теги типа [[* - это всегда только текущий документ.
2. Учите MODX-синтаксис.
a
als1984 23 ноября 2014г в 22:44 #
Николай правильно написал, как modx поймет, что image и pagetitle надо для страниц с id равным items выводить? вам надо для каждого ресурса с соответствующем id image и pagetitle получить.
ylarus1
ylarus 23 ноября 2014г в 23:56 #
спасибо за подсказки. буду пробовать)
ylarus1
ylarus 26 ноября 2014г в 00:13 #
ааа)) ура ура все получись)) А то я совсем уже отчаялась. Думала что совсем все неправильно). Я как и посоветовали по каждому id все вывела через $modx->getObject('modResource', trim($item)); Почтила немного док и вывела tvs через getObject('modTemplateVarResource'. Еще раз всем спасибо))
Fi1osof1
Fi1osof 26 ноября 2014г в 00:56 #
Хорошо, что получилось, но рано еще останавливаться, код надо еще оптимизировать. Для начала в этом:
Я как и посоветовали по каждому 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);
ylarus1
ylarus 26 ноября 2014г в 01:43 #
Ок спасибо за подсказку. Поняла)
Fi1osof1
Fi1osof 26 ноября 2014г в 01:49 #
Пожалуйста.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.