Настройка cookie-уведомлений на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка cookie-уведомлений на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • 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

Настройка cookie-уведомлений на 1С-Битрикс

Cookie-уведомление с кнопкой «Принять» — это не декоративный элемент. По GDPR и ряду других регуляторных требований аналитические и маркетинговые cookies нельзя устанавливать до получения явного согласия пользователя. Баннер должен управлять реальной загрузкой скриптов, а не просто информировать.

Что предоставляет Битрикс из коробки

В Битриксе начиная с версии ядра 21.x появился компонент bitrix:main.privacy. Он выводит баннер cookie-согласия и управляет согласиями через \Bitrix\Main\UserConsent. Компонент размещается в шаблоне сайта — обычно в footer.php:

<?php $APPLICATION->IncludeComponent('bitrix:main.privacy', '.default', []); ?>

Компонент устанавливает cookie BITRIX_SM_GDPR при принятии. Но из коробки он только фиксирует согласие — он не управляет загрузкой сторонних скриптов. Это нужно реализовывать отдельно.

Управление загрузкой скриптов через согласие

Правильная реализация: сторонние скрипты (Google Analytics, Метрика, пиксели) не загружаются до принятия cookies. Схема работы:

  1. При загрузке страницы проверяется наличие cookie BITRIX_SM_GDPR (или кастомного флага)
  2. Если cookie нет — показывается баннер, сторонние скрипты не загружаются
  3. После нажатия «Принять» — устанавливается cookie, загружаются скрипты, баннер скрывается
function loadAnalytics() {
    // Google Tag Manager
    (function(w,d,s,l,i){...})(window,document,'script','dataLayer','GTM-XXXXXX');
}

function checkConsent() {
    const consent = document.cookie.split(';').find(c => c.trim().startsWith('BITRIX_SM_GDPR='));
    if (consent && consent.includes('Y')) {
        loadAnalytics();
    }
}

checkConsent();

document.getElementById('cookie-accept').addEventListener('click', function() {
    document.cookie = 'BITRIX_SM_GDPR=Y; path=/; max-age=' + (365 * 24 * 60 * 60);
    loadAnalytics();
    document.getElementById('cookie-banner').style.display = 'none';
});

Категории cookies и гранулярное согласие

Продвинутая реализация разделяет cookies по категориям: необходимые, аналитические, маркетинговые, функциональные. Необходимые включены всегда, для остальных — отдельные переключатели.

В Битриксе гранулярное управление реализуется через несколько флагов в localStorage или отдельные cookies:

const consentCategories = {
    necessary: true,  // всегда true
    analytics: localStorage.getItem('consent_analytics') === 'true',
    marketing: localStorage.getItem('consent_marketing') === 'true'
};

При изменении настроек пользователем — сохраняете в localStorage и перезагружаете страницу для применения изменений (или динамически подгружаете/выгружаете скрипты, но это сложнее).

Интеграция с Google Tag Manager

Если используете GTM, управление согласиями удобнее вынести туда через Consent Mode v2. В GTM настраиваете триггеры на основе переменных согласия. При этом Google Analytics в режиме Consent Mode продолжает собирать агрегированные данные даже без согласия (без PII), что улучшает точность моделирования.

В Битриксе это не требует изменений PHP-кода — только настройка GTM и JavaScript-инициализация gtag('consent', 'default', {...}) до загрузки GTM-контейнера.

Хранение состояния согласия

Срок хранения согласия — не более 12 месяцев по GDPR. По истечении нужно повторно запрашивать согласие. Реализуется через проверку max-age cookie или timestamp в localStorage:

const consentTime = localStorage.getItem('consent_timestamp');
const YEAR_MS = 365 * 24 * 60 * 60 * 1000;
if (!consentTime || Date.now() - parseInt(consentTime) > YEAR_MS) {
    showCookieBanner();
}

Не путайте: cookie с флагом согласия и сами аналитические cookies — разные вещи. Первое — техническое средство фиксации согласия, второе — то, на что пользователь даёт согласие.