1 февр. 2014 г., 20:54

Сопутствующий (рекомендуемый) товар

Здравствуйте, подскажите пожалуйста как реализовать такую функцию, может у кого-то есть готовые решения? Допустим есть позиция товара — Памятник и внутри карточки товара я хотел бы выводить к нему — 1)Цветочница 2)Портрет и тд. Но в каждом ресурсе эти вот сопутствующие товары будут разными, хотелось бы в карточке каждого товара вписывать id тех позиций которые должны выводится. Быть может есть другой вариант реализации?
Здравствуйте!
Если сайт не большой, то можно так сделать: 1. Создаете TV-поле «Список множественный выбор». Указываете в нем «Включить автозавершение». Возможные значения ему указываете SQL:
@SELECT `pagetitle` AS `name`,`id` FROM `[[+PREFIX]]site_content` WHERE `published` = 1 AND `deleted` = 0
К SQL конечно можно дописать свои условия, например, where template = 2. ?
Это вам позволит указывать связанные документы.
2. В шаблоне дописываете блок с поиском дополнительных товаров с условием их TV-шки. Само собой не забываем про преобразование данных, так как в TV множественное значение будет в одной строке храниться.
Спасибо за ответ. Что касается второго пункта, можно по подробней? или посмотреть готовый вариант блока, а я уже адаптирую его под себя как на картинке. ?
1. Получить данные текучего TV-параметра
{$tv = $modx->resource->getTVTvalue($tv_id)}
2. Далее полученные данные преобразовываете и получаете массив id-шников связанных товаров. И вызываете процессор получения данных этих товаров.
Я вам здесь в двух строчках этого не покажу. Это программировать надо, хоть и не много.

{$tv = explode('||', $modx->resource->getTVValue($tv_name))}
в итоге получим массив ID.
На практике столкнулся с тем, что getTVValue вырезает "||". В итоге использовал

{$items=explode('||', $modx->getObject('modTemplateVarResource',['contentid'=>$resource_id, 'tmplvarid'=>$tv_id])->value)}


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