Разработка сайта квест-комнаты на 1С-Битрикс
Квест-комната продаёт впечатление. Сайт должен передать атмосферу ещё до визита — и при этом обеспечить быстрое бронирование без звонков. На практике 60% броней приходят вечером, когда администратор уже не отвечает. Автоматическая система бронирования со слотами и онлайн-оплатой — не опция, а необходимость.
На 1С-Битрикс такой сайт строится на инфоблоках каталога квестов, Highload-блоке расписания, модуле sale для оплаты и CRM-интеграции для обработки заявок.
Каталог квестов: структура инфоблока
Каждый квест — элемент инфоблока с развёрнутым набором свойств. Стандартного «название + описание + картинка» недостаточно — посетитель выбирает квест по конкретным параметрам.
Свойства инфоблока «Квесты»:
- Жанр — хоррор, детектив, приключение, фэнтези, sci-fi (свойство-справочник, множественное — квест может сочетать жанры)
- Сложность — от 1 до 5 (числовое, отображается иконками замков)
- Кол-во игроков — min и max (два числовых свойства)
- Возрастное ограничение — 6+, 12+, 16+, 18+ (список)
- Длительность — в минутах (числовое)
- Тизер-видео — ссылка на YouTube/VK Video (строка)
-
Фотогалерея — множественное свойство «Файл» с включённым watermark через обработчик
OnBeforeIBlockElementUpdate - Процент прохождения — статистика, обновляется агентом на основе данных из HL-блока бронирований
- Статус — активен, временно закрыт, новинка (список, влияет на сортировку и бейджи в каталоге)
На странице каталога работает smart-фильтр (CIBlockSmartFilter) по жанру, количеству игроков и сложности. Результаты фильтрации кешируются в фасетном индексе — даже при 30+ квестах (сеть локаций) отклик мгновенный.
Детальная страница квеста строится по кинематографическому принципу: полноэкранный hero-блок с тизер-видео на фоне, параметры в компактных карточках, галерея с lightbox, блок отзывов и CTA бронирования, зафиксированный в viewport.
Бронирование со слотами и динамическим ценообразованием
Это самая технически плотная часть проекта. Бронирование квеста — не просто «выбрал дату и оплатил». Нужно учесть: доступность конкретного квеста в конкретное время, подготовку помещения между сеансами, разницу в ценах по дням недели и времени суток, а также групповые скидки.
Highload-блок «Слоты бронирования»:
| Поле | Тип | Назначение |
|---|---|---|
| UF_QUEST_ID | Целое число | Привязка к квесту |
| UF_DATE | Дата | Дата сеанса |
| UF_TIME | Строка | Время начала (10:00, 11:30...) |
| UF_STATUS | Список | available / reserved / paid / completed / cancelled |
| UF_PRICE | Число | Расчётная цена для этого слота |
| UF_PLAYERS | Целое число | Фактическое кол-во игроков |
| UF_ORDER_ID | Целое число | Привязка к заказу sale |
| UF_PROMO | Строка | Применённый промокод |
| UF_SOURCE | Список | website / phone / aggregator |
Генерация слотов. Агент (CAgent) запускается ежедневно в 01:00 и создаёт слоты на 21 день вперёд. Интервал между слотами = длительность квеста + 20 минут на подготовку (сброс комнаты). Для квеста на 60 минут при работе с 10:00 до 22:00 получается 9 слотов в день. Агент берёт длительность и время подготовки из свойств инфоблока квеста — если параметры изменились, новые слоты генерируются по актуальным данным.
Динамическое ценообразование реализуется через отдельный Highload-блок «Правила цен»:
| Поле | Тип | Пример |
|---|---|---|
| UF_QUEST_ID | Целое число | 5 |
| UF_DAY_TYPE | Список | weekday / weekend / holiday |
| UF_TIME_FROM | Строка | 10:00 |
| UF_TIME_TO | Строка | 16:00 |
| UF_BASE_PRICE | Число | 80 BYN |
| UF_PLAYER_PRICE | Число | 0 (фиксированная) или 15 (за человека) |
| UF_MIN_PRICE | Число | 60 BYN (порог для малой группы) |
При генерации слотов агент определяет UF_DAY_TYPE по дню недели (выходные и праздники — из отдельного справочника), находит подходящее правило и записывает UF_PRICE. Если модель ценообразования «за человека» — на сайте отображается диапазон «от X до Y BYN», а финальная цена рассчитывается после указания количества игроков.
Алгоритм бронирования на клиенте:
- Посетитель выбирает квест — подгружается календарь с доступными датами (AJAX-запрос к контроллеру, фильтр по
UF_STATUS = availableиUF_DATE >= сегодня) - Выбирает дату — появляются доступные слоты с ценами
- Указывает количество игроков — цена пересчитывается, если модель «за человека»
- Вводит промокод (опционально) — скидка применяется через правила корзины модуля
sale - Заполняет контактные данные — имя, телефон, email
- Оплачивает онлайн — платёжная система через
sale.paysystem(ЕРИП, карты)
Резервирование слота происходит на шаге 5: статус меняется на reserved, запускается таймер 15 минут. Если оплата не поступила — агент возвращает статус available. Это предотвращает ситуацию, когда слот «завис» из-за незавершённой оплаты.
После успешной оплаты:
- Статус слота →
paid - Клиенту уходит email с деталями и SMS с адресом/временем
- В CRM Битрикс24 создаётся сделка (через REST API или модуль
crm) - За 3 часа до сеанса — автоматическое SMS-напоминание через
messageservice
Корпоративные предложения
Отдельный раздел сайта с формой заявки на корпоративное мероприятие. Форма создаётся через iblock-компонент обратной связи и включает поля: компания, количество участников, предпочитаемые даты, бюджет (диапазон), пожелания. Заявка попадает в CRM как лид с источником «корпоратив» — отдельная воронка с этапами «согласование → предоплата → проведение → отзыв».
Для корпоративных клиентов предусмотрена эксклюзивная аренда — бронирование всех квестов на определённый промежуток времени. Реализуется через массовое изменение статусов слотов с пометкой UF_SOURCE = corporate.
Отзывы и сертификаты
Отзывы хранятся в инфоблоке с премодерацией. Свойства: привязка к квесту (E), оценка (1-5), текст, фото, дата прохождения. После прохождения квеста клиенту приходит email со ссылкой на форму отзыва — авторизация не требуется, идентификация по токену из заказа.
Подарочные сертификаты — товары модуля sale с генерацией уникального кода. При покупке сертификата создаётся запись в HL-блоке «Сертификаты» с полями: код, номинал, срок действия, остаток. Сертификат применяется как купон при бронировании. PDF-сертификат генерируется автоматически через библиотеку TCPDF и отправляется на email покупателя.
Технические решения
-
SEO — ЧПУ по схеме
/quests/horror/название-квеста/, автогенерация meta через шаблон из свойств инфоблока - Скорость — композитный кеш для каталога и детальных страниц, расписание грузится через AJAX без кеша
-
Аналитика — события
dataLayerпри каждом шаге бронирования для воронки в Google Analytics / Яндекс.Метрике - Мобильная версия — календарь бронирования адаптирован под тач-интерфейс, слоты отображаются вертикальным списком вместо сетки
- Мультиязычность — при работе на туристическом рынке подключается модуль многосайтовости с англоязычной версией каталога







