Розробка системи соціальної комерції на 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 мета-теги для коректного відображення товарів при шерингу







