Настройка предупреждения о возрастных ограничениях 1С-Битрикс

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

Настройка предупреждения о возрастных ограничениях 1С-Битрикс

Всплывающее окно «Вам есть 18 лет?» — это не декоративный элемент. Отсутствие такого предупреждения на сайте, торгующем алкоголем, табаком или оружием, является административным правонарушением. При этом реализовать его «на коленке» через простой popup недостаточно: важны обход ботами, корректная работа с SEO-краулерами, хранение подтверждения и поведение при отказе.

Механизм хранения подтверждения

Ключевое решение — где хранить факт согласия. Три варианта:

Cookie — самый распространённый. Устанавливается на 24 часа или до конца сессии. Плюс: не требует серверных ресурсов. Минус: пользователь может очистить cookies.

Сессия Битрикс — надёжнее для текущего визита. Используется \Bitrix\Main\Application::getInstance()->getSession()->set('AGE_CONFIRMED', true). Сбрасывается при закрытии браузера.

Профиль пользователя — если пользователь авторизован, флаг подтверждения можно хранить в пользовательском поле (UF_AGE_CONFIRMED, тип boolean). После однократного подтверждения — больше не спрашивать. Для анонимов комбинируется с cookie.

Рекомендуемая схема: cookie для анонимов (30 дней) + UF-поле для зарегистрированных пользователей.

Компонент предупреждения

Предупреждение реализуется как отдельный компонент, подключаемый в шаблоне сайта (header.php или через bitrix:main.include). Компонент проверяет наличие cookie/сессии и, если подтверждение не получено, выводит оверлей.

Структура компонента:

/local/components/custom/age.warning/
├── class.php
├── templates/
│   └── .default/
│       ├── template.php
│       └── script.js
└── .description.php

В class.php — логика проверки и установки cookie:

public function executeComponent() {
    $cookieName = 'AGE_CONFIRMED';
    $request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();

    if ($request->getCookie($cookieName) === 'Y') {
        return; // Подтверждение уже есть
    }

    if ($this->arParams['CHECK_AUTH'] === 'Y') {
        global $USER;
        if ($USER->IsAuthorized()) {
            $userFields = CUser::GetByID($USER->GetID())->Fetch();
            if ($userFields['UF_AGE_CONFIRMED'] === '1') {
                return;
            }
        }
    }

    $this->IncludeComponentTemplate();
}

Поведение при отказе

Это критичный момент, который часто упускают. Если пользователь нажал «Нет, мне нет 18» — что происходит?

  • Редирект на специальную страницу с сообщением о недоступности контента
  • Блокировка возможности вернуться назад через history.pushState
  • Запись в cookie отказа (AGE_DENIED=Y) на 24 часа, чтобы не показывать popup снова

Страница отказа не должна содержать ссылок на защищённые разделы. Её URL обычно /age-restricted/ или /sorry/.

SEO и боты

Поисковые краулеры не должны блокироваться предупреждением. Правильная реализация:

  1. Предупреждение выводится только через JS после загрузки страницы — HTML-контент доступен для индексации
  2. Серверная проверка (302-редирект) применяется только для реальных пользователей, исключая User-Agent краулеров из списка
  3. Страницы каталога с 18+ товарами не закрываются от индексации — только кнопка «Купить» заменяется
// Проверка: не бот ли это
const isBot = /bot|crawl|spider|slurp|teoma/i.test(navigator.userAgent);
if (!isBot && !getCookie('AGE_CONFIRMED')) {
    showAgeConfirmModal();
}

Интеграция с журналом событий

Для юридически значимых сайтов (лицензируемая деятельность) факт подтверждения возраста фиксируется в лог. Через обработчик после нажатия кнопки «Да» отправляется AJAX-запрос к контроллеру, который записывает время, IP, User-Agent и идентификатор сессии — через \Bitrix\Main\Diag\Logger или в пользовательскую таблицу.

Сроки выполнения

Вариант реализации Срок
Базовый popup с cookie 4–6 часов
Компонент с сессией + редирект при отказе 8–12 часов
Полная система: авторизованные + анонимы + лог 1–2 дня

Правильно настроенное предупреждение — незаметная, но юридически важная часть инфраструктуры магазина.