##msFavorites## Компонент позволяет реализовать на сайте функционал «Избранные товары». В состав компонента включены 2 сниппета. Один формирует кнопку для добавления и удаления товаров в избранное, а второй выводит список добавленных товаров.
Для добавления товара необходимо встроить в код страницы специальную ссылку или кнопку (главное чтоб были нужные атрибуты). При клике по этой ссылке javaScript отправит запрос на коннектор, после чего попытается вызвать пользовательскую функцию msFavorite_after_add передав ей в качестве единственного аргумента jQuery объект самой ссылки. Это делается для того, чтобы можно было настроить реакцию на добавление товара в список избранных (Вы сами можете объявить эту функцию). Чтобы настроить реакцию на удаление товара из списка избранных предусмотрен аналогичный механизм, но функцию нужно назвать msFavorite_after_remove. Если же эти функции не объявлены, родной JS просто заменит надпись и атрибут data-action (add/remove). ##Сниппет msFavoritesButton## Сниппет msFavoritesButton предназначен для формирования кнопки, которая позволит добавить товар в список избранных. Он позволяет выводить различный код в зависимости от того авторизован ли пользователь и добавлен ли товар в список избранных ранее. Принимает всего 4 параметра:
productId – id товара (по умолчанию идентификатор текущего ресурса)
outTpl – чанк который будет использоваться для формирования кнопки если товара нет в избранных (по умолчанию msFavorites.button.out.tpl)
inTpl – чанк для кнопки, если товар уже в избранных (по умолчанию msFavorites.button.in.tpl)
unauthorizedTpl – чанк который выводится неавторизованным пользователям (по умолчанию msFavorites.button.unauthorized.tpl)
В unauthorizedTpl не передается никаких плейсхолдеров, он предназначен для того чтобы сообщить о необходимости авторизоваться, либо же вы можете просто указать в этом параметре пустой чанк, чтобы анонимам ничего не выводилось. В outTpl и inTpl доступны следующие плейсхолдеры:
pagetitle – заголовок ресурса
id – id ресурса
action – для outTpl всегда add, для inTpl — remove
Для корректной работы необходимо чтобы кнопка имела класс msfavorite, атрибут data-id, содержащий id товара и атрибут data-action, содержащий ключевое слово add или remove. Сниппет msFavorites Этот сниппет предназначен для вывода списка избранных товаров. Он является оберткой для msProducts и принимает все те же параметры + 2 дополнительных:
unauthorizedTpl — имя чанка, который будет выводится анонимным пользователям (по умолчанию msFavorites.unauthorized.tpl)
emptyTpl — имя чанка, который будет выводится, если список избранных товаров пользователя пуст (по умолчанию msFavorites.empty.tpl)
Вся шаблонизация и выборка производится средствами сниппета msProducts, соответственно в чанках отдельных элементов списка товаров Вам доступны все те же плейсхолдеры что и для вывода обычных товаров. По умолчанию в качестве шаблона отдельных элементов (параметр tpl) используется msFavorites.tpl.
Пример вызова
[[!msFavorites?
&tpl = `msFavorites.tpl`
&includeThumbs=`180x180`
&limit=`0`
&includeContent=`1`
&sortdir=`DESC`
]]
Важно! Сниппеты msFavorites и msFavoritesButton нужно вызывать НЕ кэшированными.