Настройка отображения количества просмотров товара 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка отображения количества просмотров товара 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка отображения количества просмотров товара 1С-Битрикс

Счётчик просмотров на карточке товара создаёт эффект популярности. В отличие от покупок, просмотры накапливаются быстрее — даже у нового товара через несколько дней появляются реальные цифры. Битрикс не ведёт счётчик просмотров по товарам по умолчанию, но предоставляет инструменты для его реализации.

Встроенный модуль статистики

Модуль statistic ведёт таблицу b_stat_page_hit — каждое обращение к странице пишется туда с полем PATH (URI страницы). Из этой таблицы можно получить количество просмотров детальной страницы товара по её URL. Но это тяжёлый способ: таблица растёт быстро, запросы к ней медленные, и модуль статистики часто отключён на нагруженных сайтах.

Собственный счётчик просмотров

Правильный подход — хранить счётчик прямо в свойстве инфоблока. Создаётся числовое свойство VIEW_COUNT в b_iblock_property. При каждом открытии детальной страницы товара обработчик события инкрементирует значение.

Событие срабатывает в компоненте bitrix:catalog.element, в component_epilog.php:

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

$elementId = $arResult["ID"];
$iblockId  = $arResult["IBLOCK_ID"];
$currentCount = (int)$arResult["PROPERTIES"]["VIEW_COUNT"]["VALUE"];

CIBlockElement::SetPropertyValuesEx(
    $elementId,
    $iblockId,
    ["VIEW_COUNT" => $currentCount + 1]
);

Запись в component_epilog.php не блокирует отрисовку страницы — выполняется после отправки ответа клиенту (при использовании ob_flush/flush или встроенных механизмов Битрикс).

Проблема ботов и повторных просмотров

Без фильтрации счётчик накрутят поисковые роботы. Минимальная защита — не считать просмотры, если:

  • В $_SERVER['HTTP_USER_AGENT'] есть признаки бота (Googlebot, YandexBot, Bingbot)
  • IP-адрес посетителя уже смотрел этот товар за последние N минут

Для фильтрации повторов используется сессия: $_SESSION['viewed_products'][$elementId] = time(). Если запись есть и прошло менее 30 минут — счётчик не инкрементируется.

Кэширование и производительность

Если детальная страница кэшируется (а она должна кэшироваться), component_epilog.php вызывается при каждом просмотре, даже если основной контент взят из кэша. Это именно то поведение, которое нужно — счётчик работает независимо от кэша страницы.

При высокой нагрузке (>100 просмотров в минуту на один товар) прямая запись в b_iblock_element_prop создаёт конкурентные обновления одной строки. Решение: инкремент через атомарный UPDATE:

$DB->Query("UPDATE b_iblock_element_prop_s{$iblockId}
            SET PROPERTY_VIEW_COUNT = COALESCE(PROPERTY_VIEW_COUNT, 0) + 1
            WHERE IBLOCK_ELEMENT_ID = " . intval($elementId));

Название колонки зависит от ID свойства — генерируется Битрикс автоматически при создании свойства.

Вывод счётчика

В шаблоне bitrix:catalog.element добавляется вывод значения свойства:

$viewCount = (int)$arResult["PROPERTIES"]["VIEW_COUNT"]["VALUE"];
echo '<span>' . $viewCount . ' просмотров</span>';

Значение выводится с правильным склонением: «просмотр», «просмотра», «просмотров» в зависимости от числа.

Что входит в настройку

  • Создание свойства VIEW_COUNT в инфоблоке каталога
  • Добавление обработчика в component_epilog.php с фильтрацией ботов
  • Реализация защиты от повторного счёта через сессию
  • Атомарный INCREMENT для нагруженных магазинов
  • Вывод счётчика с правильными окончаниями в шаблоне карточки