Иногда возникает проблема - просмотренные товары не выводятся с помощью компонента bitrix:catalog.products.viewed
Однажды по запросу одного из наших клиентов нужно было разместить внизу главной страницы просмотренные товары. Задача в общем-то не сложная: берешь компонент catalog.products.viewed, ставишь его в нужном месте шаблона, устанавливаешь в нем нужные настройки и при необходимости кастомизируешь. Казалось бы что может быть проще. Так мы и сделали, однако просмотренные товары не показывались. Поковырявшись в интернете мы поняли, что задача довольно частая, поэтому решили освятить ее решение в этой заметке разработчика.
Итак, если на вашем сайте также компонент catalog.products.viewed упорно не хочет выводить просмотренные товары, то нужно сделать следующее: зайти в настройки модуля "Интернет-магазин" по пути "https://домен_вашего_сайта/bitrix/admin/settings.php?lang=ru&mid=sale&mid_me...; и активировать следующие настройки: "Сохранять просмотренные товары каталога", "Использовать совместимость для просмотренных товаров каталога"
Далее, нужно открыть папку с компонентом bitrix:catalog.element, который используется для отображения детальной карточки товара. В нем нужно открыть для редактирования файл component_epilog.php (если данный файл отсутствует, то создайте его) и добавить в него следующий код:
use \Bitrix\Catalog\CatalogViewedProductTable as CatalogViewedProductTable;
CatalogViewedProductTable::refresh($arResult["ID"], CSaleBasket::GetBasketUserID());
Теперь данные по просмотренным товарам будут сохраняться в таблицу b_catalog_viewed_product, а компонент catalog.products.viewed выведет эти товары там, где вы его разместили.