Как реализовать привязку к ресурсам на MODx (Evo)

Опубликовано: 26 Янв 2015

Все читатели наверняка видели на многих сайтах (в первую очередь, в интернет-магазинах) такой функционал, как "рекомендуемые товары", "смотрите также" и т.д. Смысл такого функционала в том, что к товару привязывается несколько других товаров, и на странице с подробным описанием товара выводится какая-то информация об этих "привязанных" товарах - ну например, название, маленькое фото и ссылка на детальное описание.
Простой способ сделать такой функционал, как "привязка к ресурсам" на MODx с помощью API, я и хочу рассмотреть в данной статье. Способ действительно очень простой, т.к. вы сами указываете системе, какой товар рекомендуем для данного.

Итак, создаем шаблон под названием "Единица товара".
Затем создаем новый TV-параметр с именем RECOMMEND, "Тип ввода" указываем "Text", и назначаем его шаблону "Единица товара".

Создаем новый ресурс, выбираем для него шаблон "Единица товара".
Заполняем параметр "Рекомендуемые товары" так - ID рекомендуемых товаров через запятую. Например: 115,45,78
Сохраняем документ.

В принципе, все, осталось написать небольшой сниппет, чтобы вывести рекомендуемые товары.
Создаем новый сниппет под названием Advance, в коде которого нам надо реализовать следующий алгоритм:

   - получить строку с ID привязанных товаров
   - преобразовать строку в массив ID'шников
   - обойти в цикле этот массив и вытащить нужную инфу по каждому ID (будем вытаскивать тайтл, например).

<?php
$str = $modx->getTemplateVar('RECOMMEND'); // получили строку
$arLinks = explode(',', $str["value"]);  //массив ссылок на связанные документы
foreach ($arLinks as $pageId){           //Начали цикл
$page = $modx->getDocument($pageId);
$pageTitle = $page["pagetitle"];
?><a href="[~<?=$pageId?>~]"><?=$pageTitle?></a><br /><? //показали ссылки на "привязанные" ресурсы
 }
?>

Здесь я рассмотрела самый простой вывод,который может быть вообще. На деле, в рекомендуемых товарах неплохо было бы показывать фото и ценник. Если фото и ценник вы задали как TV-параметры, то вытащить их совершенно несложно при помощи API-метода:

<?$vars = $modx->getTemplateVars(array('SMALL_PHOTO', 'PRICE'), '*', $pageId);?>

в том же цикле.

Подключаем наш сниппет. Заходим в шаблон "Единица товара" и подлючаем в нужном месте вывод рекомендуемых товаров - вот так . Если по каким-либо причинам вы не хотите показывать заголовок "рекомендуемые товары" у товара, к которому ничего не привязано - то код после первой строчки заключите в проверку по условию:

<?if($str["value"] != '') ?>

Комментарии (0)


Оставить комментарий




Разрешённые теги: <b><i><br>Добавить новый комментарий: