Как человек наступивший на ВСЕ грабли в этом вопросе, хочу скомпилировать варианты решения проблемы из этой ветки форума и рассказать почему они не срабатывали у многих из нас.
Варианты с написанием кастомного кода в тех или иных местах не рассматриваю.Для того, чтобы заставить компонент работать штатными методами нужно выполнить несколько описанных тут советов одновременно и кое что не описанное. А именно:
Цитата |
---|
Евгений Жуков написал: Достаточно установить настройку "SET_VIEWED_IN_COMPONENT" (Включить сохранение информации о просмотре товара для старых шаблонов) в компоненте. |
Не достаточно.
Во-первых, если вы используете комплексный компонент то этот параметр называется немного иначе: "DETAIL_SET_VIEWED_IN_COMPONENT".
Во-вторых, если вы используете старые или кем-то модифицированные компоненты, убедитесь, что комплексный компонент пробрасывает этот параметв в конечный компонент
(Привет, Михаил Базаров со своим компонентом simple, который ты советуешь использовать в сових видео). А так, как параметры немного разные, то тут тоже нужно не натупить и написать вот так:
Код |
---|
"SET_VIEWED_IN_COMPONENT" => $arParams["DETAIL_SET_VIEWED_IN_COMPONENT"], |
Дале в админке обязательно нужно установить нужную галочку
Цитата |
---|
Сергей Панчук написал: Для новых версий Битрикса ничего не нужно добавлять. Достаточно поставить галочку "Использовать совместимость для просмотренных товаров каталога" в настройках модуля Интернет-магазина. |
Читая код компонента я не понял при чём тут эта галочка. Но как раз над ней находится "Сохранять просмотренные товары каталога:" В коде компонента есть проверка на установку именно её.
Правильно рекомендовал эту галочку Константин:
Цитата |
---|
Константин Сейферов написал: Настройки -> Настройки продукта -> Настройки модулей -> Интернет магазин / Торговый каталог (в зависимости что используете) -> Включаем "Сохранять просмотренные товары каталога" -> Сохранить |
Однако и после этого компонент просмотренных товаров ни чего может не выдать.
- Уточняю, что для того, чтобы он заработал, нужно чтобы компонент catalog.element при выводе карточки товара сохранял данные о товаре в специальную таблицу. Поэтому мы колдуем именно с ним, а не с компонентом catalog.products.viewed с которым изначально возникла проблема.
И так, если у вас всё ещё не работает как надо, то сообщаю, что нужный нам параметр "SET_VIEWED_IN_COMPONENT" в классе компонента принудительно устанавливается в "N" если выключен "режим совместимости". В комплексном компоненте каталога устанавливаем
Код |
---|
"COMPATIBLE_MODE" => "Y",// Включить режим совместимости |
и убеждаемся что он пробрасывается до catalog.element
И вот теперь всё должно заработать.
Краткое повторение:
- SET_VIEWED_IN_COMPONENT должен быть установлен в Y
- Чтобы он таким и остался COMPATIBLE_MODE должен быть установлен в Y
- В настройках модуля должна быть включена галочка "Сохранять просмотренные товары каталога"
Для совсем юных падаванов уточняю, что оба эти параметра нужно установить в коде вызова комплексного компонента bitrix:catalog Только при выполнении этих трёх условий, компонент catalog.element начинает запоминать просмотренные товары, а catalog.products.viewed начинает их отображать.
P.S. Ну и большое спасибо разработчикам Битрикса, что ни о чём этом не написано в документации.