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

Здравствуйте, подскажите пожалуйста как реализовать такую функцию, может у кого-то есть готовые решения? Допустим есть позиция товара — Памятник и внутри карточки товара я хотел бы выводить к нему — 1) Цветочница 2) Портрет и т.д. Но в каждом ресурсе эти вот сопутствующие товары будут разными, хотелось бы в карточке каждого товара вписывать id тех позиций которые должны выводится. Быть может есть другой вариант реализации?

Comments

Здравствуйте! Если сайт не большой, то можно так сделать:

  1. Создаете TV-поле «Список множественный выбор». Указываете в нем «Включить автозавершение». Возможные значения ему указываете SQL:
@SELECT 
`pagetitle` AS `name`,`id` FROM `[[+PREFIX]]site_content` WHERE `published` = 1 AND `deleted` = 0

К SQL конечно можно дописать свои условия, например, where template = 2. Это вам позволит указывать связанные документы.

  1. В шаблоне дописываете блок с поиском дополнительных товаров с условием их TV-шки. Само собой не забываем про преобразование данных, так как в TV множественное значение будет в одной строке храниться.

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

  1. Получить данные текучего TV-параметра
{$tv = $modx->resource->getTVTvalue($tv_id)}
  1. Далее полученные данные преобразовываете и получаете массив id-шников связанных товаров. И вызываете процессор получения данных этих товаров.

Я вам здесь в двух строчках этого не покажу. Это программировать надо, хоть и не много.

{$tv = explode('||', $modx->resource->getTVValue($tv_name))}

в итоге получим массив ID. На практике столкнулся с тем, что getTVValue вырезает "||". В итоге использовал

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