Рейтинг товара — это не только украшение карточки, но и сигнал доверия для покупателя и для поисковика. В 1С-Битрикс за оценки отвечает модуль «Веб-формы и голосования» (vote) и связанные механизмы лайков, а корректно оформленная микроразметка aggregateRating выводит звёзды прямо в сниппет выдачи.
Какие модули отвечают за оценки
В 1С-Битрикс нет отдельного «модуля рейтинга товаров» — оценка собирается из нескольких механизмов, и важно не путать их между собой:
- Модуль «Веб-формы и голосования» (символьный код
vote) — классические голосования и рейтинги-звёзды через компонентbitrix:vote.result. Именно он даёт «оцените товар от 1 до 5». - Рейтинги авторизации (модуль
main, классCRatings) — лайки и «плюсы» к сущностям, привязанные к пользователю. Используются для комментариев и отзывов. - Модуль «Веб-аналитика» (
statistic) — фиксирует события и помогает считать конверсию, но сам оценок не хранит.
Для магазина базовая схема такая: голосование-звёзды на vote, лайки на CRatings, а итоговый средний балл выводим в карточку и в микроразметку.
vote установлен: Настройки → Настройки продукта → Модули. На редакциях «Малый бизнес» и «Бизнес» он входит в поставку.Настройка голосования-звёзд
Голосование в Битрикс — это отдельная сущность. Порядок такой:
- Зайдите в
Сервисы → Опросы, голосования → Голосованияи создайте группу (канал), например «Рейтинги товаров». - Внутри группы создайте голосование с одним вопросом типа «Оцените товар» и вариантами ответа 1–5, отметив тип поля как «переключатель» или используя шаблон звёзд.
- Запомните
IDголосования — он понадобится компоненту.
На странице товара выводится компонент bitrix:vote.result с параметром VOTE_ID. Он рисует звёзды, принимает голос через AJAX и показывает средний балл и число проголосовавших.
Рейтинг для каждого товара
Штатное голосование vote удобно для одного объекта, но плохо масштабируется на тысячи SKU. На практике интеграторы используют один из подходов:
| Подход | Где хранится | Плюсы и минусы |
|---|---|---|
| Свойства инфоблока | Свойства RATING_VALUE и RATING_VOTES у элемента | Просто, кэшируется вместе с товаром; пересчёт нужно делать вручную обработчиком |
| Отдельная таблица | Своя ORM-сущность с полями PRODUCT_ID, USER_ID, VALUE | Гибко, защита от повторного голоса на уровне БД; требует кода |
| Оценки из отзывов | Балл внутри отзыва/комментария | Один балл = один отзыв, честнее; зависит от модуля отзывов |
Средний балл удобно кэшировать в свойство элемента и обновлять по событию нового голоса — тогда каталог и карточка читают готовое число без агрегирующих запросов.
Лайки и голоса «за» через CRatings
Если нужен не балл, а простое «нравится», используйте штатный рейтинг авторизации. Компонент bitrix:rating.vote (или CRatings::AddRatingVote() в коде) вешается на любую сущность по паре ENTITY_TYPE_ID и ENTITY_ID.
- Голосовать могут только авторизованные пользователи — это заметно снижает накрутку.
- Настройки правил рейтинга — в
Настройки → Социальные сервисы → Рейтинги: там задаётся вес голоса и группы, которым разрешено голосовать. - Значение легко вывести в карточке товара рядом со звёздами как «N покупателей рекомендуют».
Вывод рейтинга в карточке и каталоге
В типовых решениях (bitrix:catalog.element, «Аспро», «Крайт» и т. п.) под звёзды уже есть блок в шаблоне template.php. Чтобы вывести собственный рейтинг:
- В компоненте товара добавьте свойства
RATING_VALUEиRATING_VOTESв параметрPROPERTY_CODE. - В шаблоне отрисуйте звёзды по значению (например, ширина заливки =
value / 5 * 100%). - В списке товаров выводите компактный вариант — звёзды плюс число отзывов ссылкой на блок отзывов.
Не забывайте про кэш: компонент catalog.element кэшируется, поэтому AJAX-отправку голоса делайте отдельным запросом, а обновление среднего балла — через сброс тегированного кэша или обновление свойства элемента, что сбрасывает кэш карточки автоматически.
Микроразметка rating и звёзды в выдаче
Главная SEO-ценность рейтинга — расширенный сниппет со звёздами. Для этого товар размечают по schema.org/Product с вложенным aggregateRating:
ratingValue— средний балл (например, 4.7);ratingCountилиreviewCount— количество оценок/отзывов;bestRating/worstRating— границы шкалы (5 и 1).
Разметку удобнее отдавать в JSON-LD в <head> карточки, подставляя значения из тех же свойств. Проверяйте результат в валидаторе Google Rich Results и в разметке Яндекса.
aggregateRating при нуле голосов нельзя — Google считает это нарушением и может наложить ручные санкции на расширенные результаты. Выводите блок рейтинга только когда ratingCount > 0.Защита от накрутки
Рейтинг легко испортить накруткой, поэтому заложите ограничения ещё на этапе настройки:
- Только авторизованные — самый простой барьер; штатный
CRatingsтак и работает. - Один голос на пользователя/товар — контролируйте уникальность на уровне БД, а не только cookie.
- Оценка только после покупки — сверяйтесь с заказами в модуле
sale, разрешая балл лишь тем, у кого товар есть в оплаченном заказе. - Капча и лимит частоты для гостевых голосований, если они разрешены.
Дополнительно логируйте USER_ID, IP и время голоса — это помогает вычистить аномальные всплески и спорные оценки при разборе жалоб.
Итог
Рейтинги в 1С-Битрикс собираются из нескольких кирпичей: голосование-звёзды на модуле vote, лайки через CRatings и балл из отзывов. Для магазина с большим каталогом штатное голосование почти всегда дорабатывают под пер-товарное хранение, кэшируют средний балл в свойствах элемента и обязательно закрывают доступ от накрутки. Финальный штрих — корректная микроразметка aggregateRating, которая выводит звёзды в поисковый сниппет и поднимает кликабельность.
Если нужно внедрить рейтинги так, чтобы они не тормозили каталог и правильно попадали в микроразметку, мы в B2Bsite настроим механику голосования, антинакрутку и вывод под ваш шаблон, а при необходимости синхронизируем данные с 1С.
Частые вопросы
Какой модуль отвечает за рейтинг товаров в Битрикс?
За звёзды-голосование отвечает модуль «Веб-формы и голосования» (vote), за лайки — рейтинги авторизации из модуля main (класс CRatings). Отдельного «модуля рейтинга товаров» в поставке нет.
Можно ли сделать отдельный рейтинг для каждого товара?
Да. Штатное голосование vote плохо масштабируется на тысячи SKU, поэтому оценки обычно хранят в свойствах инфоблока или в отдельной ORM-таблице с привязкой к ID товара и пользователю.
Как вывести звёзды рейтинга в карточке товара?
Значение среднего балла добавляют в PROPERTY_CODE компонента catalog.element и отрисовывают звёзды в шаблоне, задавая ширину заливки пропорционально баллу от 1 до 5.
Как показать звёзды рейтинга в поисковой выдаче?
Нужно разметить товар по schema.org/Product с блоком aggregateRating, указав ratingValue и ratingCount. Удобнее отдавать это в JSON-LD и проверять в валидаторе Rich Results.
Почему нельзя выводить микроразметку рейтинга без голосов?
Пустой или нулевой aggregateRating Google трактует как нарушение и может снять расширенные сниппеты. Выводите блок рейтинга только при ratingCount больше нуля.
Чем отличается лайк от балльного рейтинга?
Балльный рейтинг (звёзды) показывает воспринимаемое качество товара, а лайк — популярность и рекомендацию. Это разные метрики, и смешивать их в одном числе не стоит.
Как защитить рейтинг от накрутки?
Разрешайте голосовать только авторизованным, ограничивайте один голос на товар на уровне БД, а лучше — позволяйте оценку только после оплаченной покупки, сверяясь с заказами модуля sale.
Не сломает ли рейтинг кэш карточки товара?
Отправку голоса делают отдельным AJAX-запросом, а средний балл кэшируют в свойстве элемента. Обновление свойства сбрасывает кэш карточки автоматически, поэтому производительность не страдает.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.