Как разработать модуль отзывов и рейтингов в 1С-Битрикс?
Мы часто сталкиваемся с ситуацией, когда клиенты пытаются собрать отзывы с помощью стандартных компонентов bitrix:catalog.element.vote и bitrix:forum. Результат плачевен: форум без модерации, рейтинг без верификации покупки, отсутствие структурированных данных для Schema.org. Полноценный модуль отзывов — это другая история: верифицированные отзывы, многокритериальный рейтинг, модерация, ответы продавца, агрегированные звёзды в микроразметке. Мы — команда с 7-летним опытом разработки на 1С-Битрикс — предлагаем реализацию такого модуля под ключ. Оцените проект и получите консультацию — просто свяжитесь с нами.
Почему стандартные решения не подходят?
В Битрикс есть компонент bitrix:catalog.element.vote для голосования. И bitrix:forum с привязкой к элементам — это то, из чего обычно собирают отзывы. У этих решений нет встроенной верификации оплаченных заказов, отсутствует модерация, нет многокритериальной оценки. Микроразметка не генерируется, что лишает вас SEO-преимущества в виде звёзд в выдаче. Наш модуль закрывает все эти пробелы.
Как работает верификация покупки?
Самое ценное в отзыве — пометка «проверенный покупатель». Проверяем по b_sale_order:
public function isVerifiedPurchase(int $userId, int $productId): bool { $order = \Bitrix\Sale\Internals\BasketTable::getList([ 'select' => ['ORDER_ID'], 'filter' => [ '=PRODUCT_ID' => $productId, '=ORDER.USER_ID' => $userId, '=ORDER.PAYED' => 'Y', '=ORDER.CANCELED' => 'N', ], 'limit' => 1, ])->fetch(); return (bool)$order; } При создании отзыва order_id можно передать явно — тогда проверка однозначная. Без order_id — проверяем по любому оплаченному заказу с этим товаром.
Модерация и защита от спама
Все отзывы создаются со статусом pending и попадают в очередь модерации. Возможны два режима:
- Ручная модерация — модератор одобряет/отклоняет каждый отзыв.
- Автоодобрение — отзывы верифицированных покупателей публикуются автоматически, остальные — в очередь.
Фильтр спама работает через простые эвристики: ссылки в теле отзыва, порог заглавных букв, дублирующиеся тексты, стоп-слова. Подозрительные отзывы получают статус spam.
class SpamDetector { public function check(string $text): SpamResult { if (preg_match('/https?:\/\//i', $text)) return SpamResult::spam('Ссылки запрещены'); if (similar_text($text, $this->getLastReview($text)) > 80) return SpamResult::spam('Дубликат'); foreach ($this->stopWords as $word) { if (mb_stripos($text, $word) !== false) return SpamResult::suspicious(); } return SpamResult::clean(); } } Многокритериальный рейтинг
Для товаров можно задать несколько критериев оценки (например: «Качество», «Соответствие описанию», «Скорость доставки»). Итоговый рейтинг — среднее по всем критериям:
SELECT entity_id, AVG(rr.value) AS avg_rating, COUNT(DISTINCT r.id) AS review_count FROM b_vendor_review r JOIN b_vendor_review_rating rr ON rr.review_id = r.id WHERE r.entity_type = 'product' AND r.status = 'approved' GROUP BY entity_id; Агрегированные данные кешируются тегом review_entity_{entity_id} и сбрасываются при одобрении нового отзыва.
Schema.org микроразметка
Для SEO-эффекта важно вывести агрегированный рейтинг в микроразметке. Согласно Wikipedia: Schema.org, для товара нужно указать AggregateRating:
<div itemscope itemtype="https://schema.org/Product"> <span itemprop="name">Название товара</span> <div itemprop="aggregateRating" itemscope itemtype="https://schema.org/AggregateRating"> <span itemprop="ratingValue">4.7</span> <span itemprop="reviewCount">143</span> </div> </div> Компонент vendor:reviews.aggregate генерирует этот блок на основе данных из кеша. Сайты с микроразметкой получают в 5 раз больше кликов по звёздам — проверено на практике. Вы получаете звёзды в выдаче.
Голосование за полезность
Пользователи могут отметить отзыв как «полезный» или «бесполезный». Механизм защиты от накрутки:
- Один голос с одного IP в сутки.
- Авторизованные пользователи — один голос на отзыв навсегда.
- Рейтинг полезности влияет на порядок отображения отзывов.
Процесс разработки
- Аналитика и проектирование модели данных (ORM-таблицы).
- Разработка модуля: инфоблоки, критерии, верификация.
- Модерация, спам-фильтр, голосование.
- Интеграция с микроразметкой и компонентами сайта.
- Тестирование и деплой.
Сравнение стандартного подхода и нашего модуля
| Характеристика | Стандартный форум | Наш модуль |
|---|---|---|
| Верификация покупки | Нет | По оплаченному заказу |
| Модерация | Нет | Ручная / автоодобрение |
| Многокритериальный рейтинг | Нет | Да (любые критерии) |
| Микроразметка Schema.org | Нет | AggregateRating, Product |
| Спам-фильтр | Нет | Эвристики, стоп-слова |
| Ответы продавца | Через форум | Встроенные |
Сроки разработки
| Этап | Срок |
|---|---|
| ORM-таблицы, модель отзывов | 1 день |
| Верификация покупки, интеграция с sale | 1 день |
| Модерация, спам-фильтр | 2 дня |
| Многокритериальный рейтинг, агрегация | 1 день |
| Schema.org микроразметка | 0.5 дня |
| Голосование за полезность | 0.5 дня |
| Ответы продавца, уведомления | 1 день |
| Компоненты для сайта | 2 дня |
| Административный интерфейс + очередь модерации | 1 день |
| Тестирование | 1 день |
Итого: 11 рабочих дней. Импорт отзывов из Яндекс.Маркета или других площадок — дополнительно 1–2 дня.
Что входит в работу
- Модуль отзывов с ORM-таблицами, компонентами и админ-интерфейсом.
- Настройка верификации покупки, модерации, спам-фильтра.
- Многокритериальный рейтинг и Schema.org микроразметка.
- Голосование за полезность и ответы продавца.
- Документация и обучение сотрудников.
- Поддержка после запуска.
Типичные ошибки при разработке модуля отзывов
- Использование стандартного форума без доработок — нет модерации, спама.
- Игнорирование микроразметки — пропадает SEO-эффект.
- Отсутствие кэширования агрегированного рейтинга — нагрузка на базу.
- Неправильная проверка верификации — можно накрутить отзывы.
Свяжитесь с нами, чтобы обсудить ваш проект и получить точную оценку. Мы работаем с Битрикс уже много лет и гарантируем качественный результат.







