Разработка системы социальной коммерции на 1С-Битрикс
Социальная коммерция — это продажи через механизмы социального взаимодействия: отзывы с рейтингами, вишлисты, совместные покупки, реферальные программы, лайки и шеринг товаров. Каждый из этих механизмов либо снижает барьер к покупке (социальное доказательство), либо расширяет охват (виральность). В Битрикс часть из них есть в базовой комплектации, часть требует разработки.
Модуль отзывов и рейтингов
В Битрикс встроены отзывы через компонент reviews и рейтинги через vote. Для полноценной социальной коммерции нужно расширить их:
Верифицированные покупки — отзыв может оставить только пользователь, купивший товар. Проверка: b_sale_order_basket содержит PRODUCT_ID в завершённых заказах USER_ID. Добавьте условие в PHP-обработчик перед созданием отзыва через CIBlockElement::AddSection() или через кастомную таблицу bl_product_reviews.
Фото в отзывах — стандартный компонент reviews не поддерживает медиа. Создайте свой компонент с AJAX-загрузкой файлов через \CFile::SaveFile() и связью с отзывом через пользовательскую таблицу bl_review_media.
Сортировка по полезности — кнопки «Полезно/Не полезно» с голосованием через \Bitrix\Vote\VoteTable. Результат используется для ранжирования отзывов по умолчанию.
Вишлисты и списки желаний
Вишлист — это именованный список товаров пользователя. Создайте систему на основе пользовательской таблицы:
// Структура таблицы bl_wishlists
// wishlist_id, user_id, name, is_public, share_token, created_at
// Структура bl_wishlist_items
// id, wishlist_id, product_id, added_at, note
class WishlistService
{
public static function addItem(int $userId, int $productId, ?string $wishlistName = null): void
{
$wishlistId = self::getOrCreateDefault($userId, $wishlistName);
// Проверяем, нет ли уже этого товара
$exists = WishlistItemTable::getRow([
'filter' => ['WISHLIST_ID' => $wishlistId, 'PRODUCT_ID' => $productId],
]);
if (!$exists) {
WishlistItemTable::add([
'WISHLIST_ID' => $wishlistId,
'PRODUCT_ID' => $productId,
'ADDED_AT' => new \Bitrix\Main\Type\DateTime(),
]);
}
}
public static function shareWishlist(int $wishlistId): string
{
$token = bin2hex(random_bytes(16));
WishlistTable::update($wishlistId, ['SHARE_TOKEN' => $token, 'IS_PUBLIC' => 1]);
return '/wishlist/shared/' . $token;
}
}
Публичная страница вишлиста доступна по URL с токеном — другой пользователь может добавить товары из него прямо в корзину. Это работает как виральный механизм, особенно в подарочных категориях.
Совместные покупки
Совместные покупки — пользователь создаёт «групповой заказ», приглашает других, при достижении нужного количества участников цена снижается. Реализация:
Таблица bl_group_purchases: id, product_id, creator_user_id, target_qty, current_qty, discount_pct, price_with_discount, expires_at, status.
Таблица bl_group_purchase_members: group_id, user_id, joined_at, paid.
При достижении current_qty >= target_qty агент меняет status = active и отправляет уведомления участникам. Каждый участник оплачивает свою долю по сниженной цене — создаётся отдельный заказ в b_sale_order со скидкой.
Реферальная программа
Реферальный механизм: пользователь получает уникальную ссылку, которую распространяет в соцсетях. При переходе по ссылке новый посетитель видит специальный оффер или скидку. При покупке — реферер получает бонус.
// Генерация реферальной ссылки
$refCode = base64_encode($userId . '-' . crc32($userId . SITE_SECRET));
$refLink = 'https://' . SITE_SERVER_NAME . '/?ref=' . $refCode;
// Обработчик входящего трафика (в init.php или компоненте)
$refCode = $_GET['ref'] ?? null;
if ($refCode && !isset($_SESSION['ref_code'])) {
$_SESSION['ref_code'] = $refCode;
setcookie('ref_code', $refCode, time() + 86400 * 30, '/');
}
// При создании заказа — начисление бонуса рефереру
AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Sale\Order $order) {
$refCode = $_COOKIE['ref_code'] ?? null;
if ($refCode) {
$referrerId = ReferralService::getUserIdByCode($refCode);
if ($referrerId && $referrerId !== $order->getUserId()) {
BonusService::credit($referrerId, $order->getPrice() * 0.05); // 5% от покупки
}
}
});
Шеринг товаров в соцсети
Кнопки «Поделиться» в карточке товара — стандартные share-ссылки. Для отслеживания шерингов добавьте AJAX-endpoint, который фиксирует событие в bl_share_events(product_id, user_id, network, created_at) и возвращает UTM-ссылку с идентификатором пользователя для атрибуции продаж через социальный трафик.
Open Graph и мета-теги для соцсетей
При шеринге соцсеть парсит Open Graph теги страницы товара. В шаблоне catalog.element добавьте:
<meta property="og:title" content="<?= htmlspecialchars($arResult['NAME']) ?>"/>
<meta property="og:description" content="<?= htmlspecialchars($arResult['PREVIEW_TEXT']) ?>"/>
<meta property="og:image" content="https://<?= SITE_SERVER_NAME ?>/<?= \CFile::GetPath($arResult['PREVIEW_PICTURE']) ?>"/>
<meta property="og:price:amount" content="<?= $arResult['CATALOG_PRICE_1']['PRICE'] ?>"/>
<meta property="og:price:currency" content="RUB"/>
Сроки выполнения
| Компонент | Сложность | Сроки |
|---|---|---|
| Верифицированные отзывы с фото | Средняя | 5–7 дней |
| Вишлисты с публичным доступом | Средняя | 4–6 дней |
| Реферальная программа | Средняя | 5–8 дней |
| Совместные покупки | Высокая | 10–15 дней |
| Open Graph и шеринг с атрибуцией | Низкая | 2–3 дня |
Что разрабатываем
- Систему верифицированных отзывов с проверкой по истории покупок и поддержкой медиа
- Вишлисты с публичными ссылками для шеринга в соцсетях
- Реферальную программу с отслеживанием по cookie/UTM и начислением бонусов
- Механизм совместных покупок с порогами количества и временными ограничениями
- Open Graph метатеги для корректного отображения товаров при шеринге







