Корзина Matsesta с блоком «Выберите подарки» на Аспро: Лайтшоп

Как мы реализовали функционал «Подарки» в интернет-магазине на Аспро: Лайтшоп

ЕП
Евгений Панарин
программист 1С-Битрикс в 360i Digital. Более 7 лет работает с 1С-Битрикс и решениями Аспро.
Опубликовано: 17.10.2026 · Обновлено: 17.10.2026

Коротко

  • В готовом решении Аспро: Лайтшоп нет блока выбора подарков в корзине. Для магазина косметики Matsesta мы сделали его сами.
  • Подарки выдаются по трём порогам: от 1 000 ₽ — набор миниатюр, от 3 000 ₽ — бесплатная доставка, от 5 000 ₽ — набор SUPREME. Сумма считается после скидок и промокодов.
  • Подарок нельзя взять больше одной штуки или оформить ниже порога. Защита работает в браузере, в корзине и при оформлении заказа.
  • Корзина отвечает примерно за 0,7 секунды вместо 10–15 секунд на телефоне. Ядро Битрикса и модули Аспро не тронуты.

Кто клиент и какую акцию он запускал?

Matsesta (matsesta.shop) — интернет-магазин натуральной косметики российского производства на 1С-Битрикс с решением Аспро: Лайтшоп. Магазин запускал акцию «подарок за сумму заказа», чтобы поднять средний чек.

Сумма товаров после скидок и промокодовЧто получает покупатель
от 1 000 ₽набор миниатюр топовых средств
от 3 000 ₽бесплатная доставка
от 5 000 ₽набор SUPREME — уход для любого состояния кожи

Покупатель должен видеть, сколько осталось до подарка, выбирать его прямо в корзине и получать вместе с заказом. Магазину важно, чтобы подарок нельзя было взять сверх условий: дважды, ниже порога или через промокод. У десктопной и мобильной версий сайта Matsesta разные шаблоны, и акция должна одинаково работать в обоих.


Есть ли подарки в Аспро: Лайтшоп из коробки?

Нет. В 1С-Битрикс есть правила работы с корзиной — встроенный инструмент акций, который умеет добавить товар-подарок при выполнении условия. Но правило само по себе акцию не делает. В шаблоне Аспро: Лайтшоп не хватает остального:

  • блока выбора подарка в корзине. Без него покупатель просто не знает, что ему что-то положено;
  • подсказки «Добавьте товаров на N ₽ и получите подарок»;
  • ограничения количества. Подарок стоит в каталоге 0 ₽, и Битрикс считает его обычным бесплатным товаром с кнопками «−/+»;
  • проверки при оформлении: после промокода сумма падает ниже порога, а подарок остаётся в заказе.

Отдельная история — мобильная версия. У Аспро: Лайтшоп она работает на своём шаблоне, и доработку десктопа не видит.


Какие задачи мы поставили?

Мы сформулировали пять задач с проверяемым результатом:

  1. Показать покупателю доступные подарки и дать выбрать их в один клик — на компьютере и телефоне.
  2. Считать пороги по сумме после скидок и промокодов.
  3. Ограничить каждый подарок одной штукой.
  4. Не пропускать заказ с подарком, если сумма ниже порога. Пороги менять в админке без программиста.
  5. Сохранить скорость корзины: пересчёт быстрее секунды.

Как мы реализовали подарки в корзине Аспро: Лайтшоп?

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

Механика на правилах корзины Битрикса

Подарки и пороги Matsesta заведены в стандартных правилах работы с корзиной: отдельное правило для миниатюр, для SUPREME и для бесплатной доставки. Так магазин управляет акцией из админки, а весь наш код читает условия оттуда же. Правила промокодов применяются раньше подарочных, а сумму после всех скидок финально проверяет обработчик при оформлении заказа — он и решает, положен ли подарок.

Блок выбора подарка в корзине

Под корзиной появился блок «Выберите подарки» с кнопкой «Выбрать» и подсказка, сколько осталось до следующего подарка. Блок обновляется без перезагрузки страницы: покупатель добавил товар — подарок появился, удалил — подарок ушёл.

Блок «Выберите подарки» под корзиной Matsesta: карточки набора миниатюр и набора SUPREME с кнопкой «Выбрать»
Рисунок 1. Блок выбора подарков в десктопной версии при сумме больше 5 000 ₽.

Два шаблона Аспро — два формата ответа

Компонент подарков в десктопном шаблоне Аспро: Лайтшоп отвечает данными в формате JSON (структурированные данные, из которых скрипт сам собирает карточки). В мобильном шаблоне тот же компонент отвечает готовой HTML-разметкой карточек. Скрипт, написанный под один формат, на другой версии показывал пустой блок.

Нашли мы это, когда повторили запросы с мобильным User-Agent (строкой, по которой сайт понимает, с какого устройства пришёл посетитель) в отдельных гостевых сессиях. В коде этой разницы не видно, только в живом ответе сервера. Итоговый скрипт принимает оба формата, а все четыре файла (десктоп и мобильный, обычный и сжатый) одинаковые.

«Доработку под Аспро мы теперь проверяем на обоих шаблонах сразу, даже если правили один. Десктопный и мобильный шаблоны похожи только снаружи: один и тот же компонент Битрикса отвечает в них по-разному, и это видно лишь в живом ответе сервера», — Евгений Панарин, программист 1С-Битрикс, 360i Digital.

Мобильная версия корзины Matsesta с блоком подарков
Рисунок 2. Тот же блок в мобильном шаблоне Аспро: Лайтшоп.

Одна штука — в браузере и на сервере

Подарок в корзине Matsesta ограничен одной штукой в двух местах:

  • в интерфейсе работает штатный механизм Битрикса «максимум 1» для строки подарка, и «+» не поднимает число;
  • на сервере количество сбрасывается до одного при сохранении корзины и заказа. Это на случай, если кто-то обойдёт интерфейс.
Строка подарка в корзине: количество 1, кнопка «+» не увеличивает число
Рисунок 3. Подарок в корзине всегда остаётся в одном экземпляре.

Защита оформления без жёстких цифр в коде

Перед сохранением нового заказа сервер Битрикса сверяет сумму оплачиваемых товаров с порогом каждого подарка. Подарки и пороги он читает из тех же правил корзины. Если маркетолог добавит третий подарок или сдвинет порог, защита подхватит изменения сама. Покупатель с подарком ниже порога увидит понятное сообщение: «Подарок доступен при сумме товаров от N ₽».

Если правила по какой-то причине не прочитались, заказ с подарком не пропускается, а ошибка пишется в лог. Отказ, а не пропуск — осознанный выбор: тихая утечка бесплатных наборов обходится дороже одной заметной ошибки.

Скорость корзины

После каждого пересчёта корзины Битрикс генерирует три события, и блок подарков поначалу отправлял запрос на каждое. Запросы одного посетителя Битрикс обрабатывает строго по очереди, поэтому лишние запросы задерживали следующий пересчёт. На телефоне при нескольких нажатиях «+» итог корзины догонял строки товаров за 10–15 секунд — владелец магазина снял это на видео.

Решение — один запрос на все три события. Второй не уходит, пока не вернулся первый. Если корзина успела измениться, скрипт переспрашивает один раз с актуальными данными. Теперь на пересчёт уходит один запрос за 0,3–0,4 секунды, а корзина отвечает примерно за 0,7 секунды.

Схема: правило корзины → расчёт Битрикса → ответ сервера → блок подарков в браузере
Рисунок 4. Путь подарка от правила в админке до кнопки «Выбрать». Каждое звено мы проверяли отдельно.

Тесты и выкладка

Перед выкладкой код проходит автотесты: 31 проверка защиты на реальных правилах сайта, тест обоих форматов ответа на записанных живых ответах, тест очереди запросов и тест совпадения шаблонов.

На рабочий сайт мы выкладывали через PHP-консоль — инструмент админки Битрикса, который выполняет код прямо на сервере. Каждое изменение шло одной командой: проверка версии файла на сервере → резервная копия → запись во временный файл и мгновенная замена → сверка контрольных сумм. Ядро Битрикса и модули Аспро мы не трогали — только шаблоны сайта и подключаемый файл. Обновления Аспро: Лайтшоп доработку не затрут.


С какими сложностями мы столкнулись?

Главная сложность — разные форматы ответа в двух шаблонах Аспро. Остальные всплыли на тестах и проверке заказов:

  • Первая версия блока работала на одном шаблоне и показывала пустоту на другом. Пока мы не нашли разницу форматов, исправление для десктопа ломало телефон. Неприятно, но именно так разница и всплыла.
  • Проверка заказов показала цену ошибки: с 6 по 14 октября 2026 года SUPREME не попал ни в один заказ, а заказ на 12 311 ₽ ушёл без подарков. Это и стало поводом довести механику до трёх уровней защиты.
  • 22 набора миниатюр по 0 ₽ в одной корзине — это владелец магазина собрал на телефоне во время тестов. Отсюда ограничение в одну штуку.
  • Сначала мы подозревали условия правил корзины. Поправили, проверили, откатили в тот же день: причина сидела в браузере.

Что получил магазин?

Matsesta получила акцию, которая выдаёт подарки по порогам на компьютере и телефоне и не даёт их обойти.

Что получил магазинКак работает
Выбор подаркаблок под корзиной, кнопка «Выбрать», на компьютере и телефоне
Пороги1 000 ₽ — миниатюры, 3 000 ₽ — доставка, 5 000 ₽ — SUPREME, после скидок и промокодов
Количество подарка1 штука: в интерфейсе, корзине и заказе
Защита оформлениязаказ с подарком ниже порога не создаётся
Управлениепороги и подарки меняются в админке без программиста
Скорость1 запрос подарков на пересчёт, 0,3–0,4 с; отклик корзины ~0,7 с вместо 10–15 с

Сценарий на рабочем сайте 16 октября 2026 года: 6 608 → 4 130 → 6 608 → 826 ₽. Подарки добавляются, убираются и возвращаются без перезагрузки. При 1 316 ₽ предлагаются миниатюры, при 6 440 ₽ — SUPREME, нажатие «+» у подарка оставляет одну штуку. Заказы при проверке не оформлялись: влияние акции на средний чек мы оценим по данным первого месяца.

Покупатель видит, сколько осталось до подарка, выбирает его в один клик и получает с заказом. Лишние наборы магазин больше не раздаёт. А чтобы сдвинуть порог или добавить третий подарок, маркетологу хватит одного правила в админке — программист не нужен.


Кто работал над проектом и какие инструменты использовали?

Над акцией работали программист 1С-Битрикс 360i Digital и владелец магазина. Доводка механики до рабочего состояния заняла один рабочий день — 16 октября 2026 года.

Команда:

  • Евгений Панарин, программист 1С-Битрикс — механика, шаблоны, защита, тесты, выкладка
  • Владелец магазина — условия акции, подтверждение изменений на рабочем сайте, проверка с телефона

Инструменты:

1С-Битрикс, Аспро: Лайтшоп (десктопный и мобильный шаблоны), правила работы с корзиной, PHP-консоль админки, инструменты разработчика браузера, автотесты на PHP и Node.js, Claude Code и Codex под контролем разработчика.


Заключение

Акцию «подарок за сумму заказа» в Аспро: Лайтшоп не включить галочкой в админке: правило корзины Битрикса нужно дополнить блоком выбора, ограничением количества и проверкой при оформлении, а потом проверить всё это на десктопном и мобильном шаблонах. Для Matsesta мы собрали механику из четырёх слоёв, и теперь магазин меняет условия акции сам.

Если в вашем магазине на Битриксе подарки не доходят до заказов или корзина тормозит после доработок — напишите нам. Разберём, на каком звене теряется подарок, и доведём механику до рабочего состояния.


Частые вопросы

Есть ли подарки в Аспро: Лайтшоп из коробки?
Нет. В 1С-Битрикс есть правила работы с корзиной, которые добавляют товар-подарок. Блока выбора подарка, подсказки о сумме и ограничения количества в шаблоне Аспро: Лайтшоп нет — их нужно дорабатывать.
Можно ли считать порог подарка после скидок и промокодов?
Да. Правила промокодов в Битриксе ставятся с более высоким приоритетом и применяются раньше подарочных. Финальную проверку делает обработчик при оформлении: он сравнивает с порогом сумму оплачиваемых товаров после всех скидок.
Как ограничить подарок одной штукой в Битриксе?
Подарок стоит в каталоге 0 ₽, поэтому Битрикс не ограничивает его количество. Мы ограничили его в двух местах: штатным «максимум 1» в строке корзины и обработчиком на сервере, который сбрасывает количество до одного при сохранении корзины и заказа.
Почему подарки не показываются в мобильной версии Аспро?
Частая причина — разный формат ответа. В десктопном шаблоне Аспро: Лайтшоп компонент подарков отвечает JSON, в мобильном — готовой HTML-разметкой. Скрипт должен принимать оба формата.
Слетит ли доработка после обновления Аспро: Лайтшоп?
Нет, если не трогать ядро Битрикса и модули Аспро. В проекте Matsesta изменены только шаблоны сайта и подключаемый файл, которые обновление решения не перезаписывает.
Можно ли менять пороги и подарки без программиста?
Да. Защита при оформлении читает подарки и пороги из правил корзины. Маркетолог меняет правило в админке, и проверка подхватывает новые условия сама.
Made on
Tilda