Разработка функционала социального доказательства (social proof) 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка функционала социального доказательства (social proof) 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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

Разработка функционала социального доказательства (social proof) 1С-Битрикс

Карточка товара без отзывов, рейтинга и реальных фото покупателей конвертирует хуже. Это не маркетинговое предположение — это измеримо: A/B-тесты на e-commerce проектах стабильно показывают рост конверсии на 15–30% при добавлении блоков social proof. Задача разработчика: интегрировать эти элементы в Битрикс-магазин так, чтобы они не тормозили страницу и не плодили спам.

Что входит в social proof на Битрикс

Набор блоков зависит от типа бизнеса, но типичный перечень:

  • Рейтинг и отзывы — звёздочный рейтинг, текстовые отзывы с фото
  • Счётчик просмотров/покупок — «Этот товар купили 127 раз»
  • Уведомления о недавних покупках — всплывающий popup «Иван из Москвы купил 5 минут назад»
  • Вопросы и ответы — Q&A раздел на карточке товара
  • Пользовательские фото — UGC-галерея от покупателей
  • Бейджи — «Выбор покупателей», «Хит продаж», «Новинка»

Рейтинг и отзывы: хранение и отображение

В Битрикс есть встроенный модуль vote (голосование) и возможности через свойства инфоблока. Для полноценной системы отзывов обычно строится кастомная таблица:

CREATE TABLE b_product_reviews (
    ID          SERIAL PRIMARY KEY,
    PRODUCT_ID  INT NOT NULL,
    USER_ID     INT,
    AUTHOR_NAME VARCHAR(255),
    RATING      SMALLINT CHECK (RATING BETWEEN 1 AND 5),
    TITLE       VARCHAR(500),
    BODY        TEXT,
    PROS        TEXT,
    CONS        TEXT,
    STATUS      VARCHAR(20) DEFAULT 'pending', -- pending|approved|rejected
    DATE_CREATE TIMESTAMP DEFAULT NOW(),
    HELPFUL_YES INT DEFAULT 0,
    HELPFUL_NO  INT DEFAULT 0
);

CREATE TABLE b_review_photos (
    ID        SERIAL PRIMARY KEY,
    REVIEW_ID INT NOT NULL REFERENCES b_product_reviews(ID),
    FILE_ID   INT NOT NULL REFERENCES b_file(ID)
);

Агрегированный рейтинг (средняя оценка, количество отзывов) кешируется в отдельном поле инфоблока — не вычисляется при каждом запросе страницы. Обновляется через обработчик при одобрении нового отзыва.

Модерация обязательна. Без неё при появлении первого конкурентного или спамного отзыва репутация рушится. В стандартной реализации: отзыв со статусом pending не отображается, модератор одобряет через кастомный раздел в /bitrix/admin/ или через Битрикс24.

Счётчики и уведомления о покупках

Счётчик покупок — количество заказов с данным товаром из b_sale_basket. Прямой SQL-запрос для каждой карточки — это N+1 проблема при листинге. Решение: отдельная таблица-кеш, которая обновляется при каждом оформлении заказа:

CREATE TABLE b_product_social_counters (
    PRODUCT_ID      INT PRIMARY KEY,
    PURCHASE_COUNT  INT DEFAULT 0,
    VIEW_COUNT      INT DEFAULT 0,
    WISHLIST_COUNT  INT DEFAULT 0,
    LAST_PURCHASED  TIMESTAMP
);

Обновление через обработчик события OnSaleOrderSaved:

AddEventHandler('sale', 'OnSaleOrderSaved', function($event) {
    $order = $event->getParameter('ENTITY');
    foreach ($order->getBasket() as $item) {
        $productId = $item->getField('PRODUCT_ID');
        $db->query("UPDATE b_product_social_counters SET purchase_count = purchase_count + 1,
                    last_purchased = NOW() WHERE product_id = $productId");
    }
});

Всплывающие уведомления о покупках — AJAX-запрос к контроллеру, который возвращает последние N покупок товара (с именем города из b_sale_order_props, без персональных данных). На фронтенде — показ popup с задержкой и ограничением частоты:

async function showRecentPurchaseNotification(productId) {
    const data = await fetch(`/local/api/social-proof/recent/?product=${productId}`).then(r => r.json());
    if (data.length === 0) return;
    const purchase = data[Math.floor(Math.random() * data.length)];
    showNotification(`${purchase.city}: куплен ${purchase.time_ago} назад`);
}

Для уведомлений важна реальность данных: показывать выдуманные покупки нельзя. Если реальных данных мало (новый товар), блок не отображается.

UGC-галерея покупателей

Фото от реальных покупателей — сильнейший social proof для fashion, мебели, техники. Технически: к форме отзыва добавляется поле загрузки изображений (через CFile::SaveFile()), загруженные фото проходят модерацию, одобренные выводятся в галерее под основными фото товара.

Ресайз загружаемых пользователями изображений обязателен — без него склад /upload/ за год заполняется гигабайтами мусора:

// При сохранении фото отзыва
$resized = CFile::ResizeImageGet($fileId, ['width' => 800, 'height' => 800], BX_RESIZE_IMAGE_PROPORTIONAL);

Schema.org разметка для отзывов

Отзывы с правильной разметкой выводятся в поисковой выдаче как звёздочный рейтинг. Разметка Product + AggregateRating + Review:

$schema = [
    '@context' => 'https://schema.org',
    '@type'    => 'Product',
    'name'     => $arResult['NAME'],
    'aggregateRating' => [
        '@type'       => 'AggregateRating',
        'ratingValue' => $arResult['RATING'],
        'reviewCount' => $arResult['REVIEW_COUNT'],
        'bestRating'  => 5,
    ],
    'review' => array_map(fn($r) => [
        '@type'        => 'Review',
        'reviewRating' => ['@type' => 'Rating', 'ratingValue' => $r['RATING']],
        'author'       => ['@type' => 'Person', 'name' => $r['AUTHOR_NAME']],
        'reviewBody'   => $r['BODY'],
    ], $reviews),
];
echo '<script type="application/ld+json">' . json_encode($schema, JSON_UNESCAPED_UNICODE) . '</script>';

Бейджи на карточках товара

«Хит продаж», «Выбор покупателей», «Только здесь» — статусы, которые вычисляются по данным или проставляются вручную:

  • Хит продаж — если purchase_count в топ-5% каталога (вычисляется агентом раз в сутки)
  • Высокий рейтинг — если средний рейтинг ≥ 4.5 и количество отзывов ≥ 10
  • Скоро закончится — если остаток товара ≤ 5 единиц

Бейджи хранятся в свойстве инфоблока типа «Список» (множественное). Агент обновляет их по расписанию, не нагружая каждый запрос страницы.

Защита от накрутки

Без защиты накручивают и рейтинг, и счётчики покупок. Базовые меры:

  • Отзыв только от зарегистрированных пользователей, которые купили этот товар (проверка по b_sale_basket)
  • Ограничение: один отзыв на товар от одного пользователя
  • Rate limiting на API счётчика просмотров: один инкремент на сессию
  • Captcha или скрытое поле honeypot на форме отзыва

Сроки

Блок Что входит Срок
Рейтинг + отзывы БД, форма, модерация, Schema.org 2–3 недели
Счётчики + уведомления Таблица-кеш, агенты, popup 1–2 недели
UGC-галерея Загрузка, ресайз, модерация, вывод 1–2 недели
Бейджи Агент вычисления, вывод в листинге 3–5 дней

Social proof — это не украшение, а часть конверсионной воронки. Инвестиции в правильную реализацию окупаются ростом конверсии карточки товара, который легко измеряется через A/B-тест.