Розробка сайту пекарні на 1С-Бітрікс
Сайт пекарні працює в двох режимах одночасно. Перший — вітрина асортименту з можливістю замовлення хліба та випічки на доставку. Другий — конфігуратор тортів на замовлення, де клієнт збирає торт з компонентів і отримує розрахунок вартості. Це принципово різні сценарії, і архітектура сайту повинна обслуговувати обидва без конфліктів.
На 1С-Бітрікс перший сценарій закривається торговим каталогом з модулем sale. Другий вимагає кастомної механіки на Highload-блоках та компонентах. Розберемо обидва, з фокусом на конфігуратор.
Каталог продукції
Асортимент пекарні ділиться на розділи інфоблоку: хлі́б, плюшева випічка, листкова випічка, кондитерські вироби, сезонне меню. Кожен елемент — товар торгового каталогу з розширеним набором властивостей.
Властивості елемента:
- Склад — текстове поле з повним переліком інгредієнтів (вимога законодавства)
- Алергени — множинна властивість-довідник: глютен, молоко, яйця, горіхи, соя (відображається іконками з тултипами)
- КБЖУ — чотири числових властивості: калорії, білки, жири, вуглеводи на 100 г
- Вага — числова властивість у грамах
- Термін годності — строка («24 години», «72 години», «5 днів»)
- Наявність — властивість-список: в наявності / під замовлення / немає в наявності. Оновлюється вручну адміністратором або через інтеграцію з обліковою системою
Для товарів з варіаціями (хлі́б у нарізці та цілий, круасан з різними начинками) використовуються торгові пропозиції (SKU). Кожна пропозиція — своя ціна, вага та фото.
Фільтрація в каталозі: за розділом, алергенами (виключити з глютеном), калорійністю (діапазон). Фасетний індекс CIBlockSmartFilter забезпечує миттєву фільтрацію. Для пекарні з асортиментом 50–150 позицій цього більш ніж достатньо.
Конфігуратор торта на замовлення
Клієнт збирає торт за параметрами, бачить візуалізацію та підсумкову ціну, оформляє замовлення з указанням дати готовності. Це найскладніший компонент сайту.
Архітектура даних конфігуратора — три Highload-блоки:
HL-блок «Компоненти торта»:
| Поле | Тип | Приклади значень |
|---|---|---|
| UF_TYPE | Список | base / filling / cream / decor |
| UF_NAME | Строка | Бісквіт ванільний, Шоколадний ганаш, Мастика |
| UF_PRICE_PER_KG | Число | Вартість за кг (для base, filling, cream) |
| UF_PRICE_FIXED | Число | Фіксована вартість (для decor) |
| UF_IMAGE | Файл | Зображення для превью |
| UF_LAYER_IMAGE | Файл | Зображення шару для візуалізації |
| UF_COMPATIBLE | Строка | JSON-масив сумісних ID (не всі креми підходять до всіх основ) |
| UF_ALLERGENS | Список (множ.) | Алергени компонента |
| UF_SORT | Число | Сортування в інтерфейсі |
HL-блок «Форми та розміри»:
| Поле | Тип | Приклади |
|---|---|---|
| UF_SHAPE | Список | round / square / rectangle / heart |
| UF_TIERS | Ціле число | Кількість ярусів (1, 2, 3) |
| UF_WEIGHT_MIN | Число | Мінімальна вага в кг |
| UF_WEIGHT_MAX | Число | Максимальна вага в кг |
| UF_WEIGHT_STEP | Число | Крок (0.5 кг) |
| UF_MULTIPLIER | Число | Коефіцієнт до базової ціни (двохярусний = 1.3) |
HL-блок «Замовлення тортів»:
| Поле | Тип | Призначення |
|---|---|---|
| UF_CONFIG_JSON | Текст | Повна конфігурація торта в JSON |
| UF_WEIGHT | Число | Підсумкова вага |
| UF_PRICE | Число | Розрахована вартість |
| UF_ORDER_ID | Ціле число | Привязка до замовлення sale |
| UF_DESIRED_DATE | Дата | Бажана дата готовності |
| UF_STATUS | Список | new / confirmed / in_production / ready / delivered |
| UF_COMMENT | Текст | Побажання клієнта (надпис, особливі вимоги) |
Покроковий інтерфейс конфігуратора:
-
Форма та розмір — клієнт вибирає форму (круглий, квадратний, серце), кількість ярусів, вагу за допомогою повзунка. Для багатоярусних тортів вага розподіляється між ярусами автоматично (нижній — 60%, верхній — 40% для двохярусного)
-
Основа — вибір коржу для кожного ярусу окремо. Карточки з фото, назвою та алергенами. При виборі оновлюється візуалізація — шар коржу змінює колір/текстуру
-
Начинка — вибір з варіантів, сумісних з основою (фільтр за
UF_COMPATIBLE). Шоколадний ганаш сумісний з бісквітом та брауні, але не з медовими коржами — API повертає тільки допустимі комбінації -
Крем — аналогічно начинці, з перевіркою сумісності
-
Декор — множинний вибір: мастика, ягоди, шоколадний декор, з'їдобна печать, свіжі квіти. Кожен елемент декору має фіксовану вартість. Надпис на торті — текстове поле з обмеженням 50 символів, додає фіксовану суму
-
Итого — візуалізація зібраного торта (послойове наложення
UF_LAYER_IMAGEчерез CSSposition: absolute), повний склад, алергени (об'єднання з усіх вибраних компонентів), КБЖУ, підсумкова ціна
Формула розрахунку стоимості:
Ціна = (Σ ціна_за_кг_компонента × вага) × коефіцієнт_ярусності + Σ фіксовані_декор + надбавка_срочності
Надбавка за строк: якщо дата готовності менше ніж через 48 годин — +30%, менше 24 годин — замовлення недоступне (мінімальне час виробництва). Це обмеження реалізується на рівні валідації форми — UF_DESIRED_DATE перевіряється відносно поточної дати з урахуванням вихідних пекарні.
Увесь розрахунок виконується на сервері через AJAX-контролер. Клієнтський JS відправляє конфігурацію, контролер розраховує ціну й повертає результат. Це виключає маніпуляції з ціною на стороні браузера.
Після підтвердження конфігурація зберігається в HL-блок «Замовлення тортів», створюється замовлення в sale зі спеціальним типом платника «Торт на замовлення». Адміністратор отримує сповіщення, підтверджує замовлення (статус → confirmed), після чого клієнту відправляється посилання на оплату.
Онлайн-замовлення випічки з доставкою
Стандартна реалізація інтернет-магазину на sale: кошик, оформлення замовлення з вибором доставки (кур'єр / самовивіз), оплата онлайн або при отриманні. Особливість — часові вікна доставки. Свіжа випічка не може чекати весь день. Служба доставки налаштовується з інтервалами: 08:00–10:00, 10:00–12:00, 12:00–14:00. Клієнт вибирає зручне вікно при оформленні.
Мінімальна сума замовлення для безплатної доставки задається у властивостях служби доставки. Нижче порогу — доставка платна, вартість розраховується обробником sale.delivery.
Фотогалерея та рецепти
Галерея — інфоблок з розділами: процес випікання, торти на замовлення, інтер'єр пекарні. Кожен елемент — фото з описом. На головній виводиться ротатор з останніх робіт кондитера.
Блог рецептів — інфоблок з SEO-оптимізованими статтями. Формат: список інгредієнтів (чек-лист), покроквова інструкція з фото, КБЖУ результату. Привязка до товарів каталогу — «для цього рецепту підійде наша гречневе борошно» з кнопкою додавання в кошик. Працює на SEO-трафік та збільшує середній чек.
Технічна реалізація
| Етап | Що робиться | Графік |
|---|---|---|
| Прототип | Wireframes конфігуратора, структура інфоблоків | 3–5 днів |
| Дизайн | UI конфігуратора, каталог, карточка товара | 5–7 днів |
| Верстка | Адаптивна верстка, анімації конфігуратора | 5–7 днів |
| Backend | HL-блоки, контролери розрахунку, інтеграція sale | 7–10 днів |
| Контент | Наповнення каталогу, фотозйомка | 3–5 днів |
| Тестування | Перевірка розрахунків, навантаження, мобільні пристрої | 3–4 дні |
Композитний кеш увімкнений для каталогу та блогу. Конфігуратор торта працює повністю через AJAX — не кешується. Карточки товарів містять мікроразметку Schema.org Product з даними про харчову цінність (NutritionInformation).







