Налаштування 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. Схема роботи:
- При завантаженні сторінки проверяется наявність cookie
BITRIX_SM_GDPR(або спеціального флага) - Якщо cookie немає — показується баннер, сторонні скрипти не завантажуються
- Після натискання «Прийняти» — встановлюється 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 — різні речі. Перше — технічне засобу фіксації згоди, друге — те, на що користувач дає згоду.







