Перейти к содержимому
Забрать бесплатно
Модификации выключены. Так эта страница выглядит на обычной Тильде.

Как ограничить промокод по сумме и товарам

12 августа 2026 3 МИН КОМАНДА MODKOD

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

✓ ПРОВЕРЕНО 12 августа 2026 кнопка родного поля вызывает t_input_promocode__applyPromoCode, код проверяется POST-запросом к payment/promocode, один активный объект хранится в window.tcart.promocode, а итог считает tcart__calcPromocode — tilda-promocode-1.0.min.js, tilda-cart-1.1.min.js и разбор M1 в plans/how-mods-work.md

Короткий ответ

Оставьте проверку кода и расчёт скидки Тильде. Модификация может добавить условия по текущей корзине: минимальную сумму, обязательный или запрещённый товар, период кампании. Неподделываемое «один раз на покупателя» требует сервера.

Разделите три разных ограничения

ЗадачаГде решается
Код существует и ещё действителенсервер промокодов Тильды
В корзине нужная сумма или товарбраузер до активации
Этот человек уже использовал кодсервер с историей покупателя

Если смешать их в одном скрипте, он начнёт сам считать скидку и спорить с корзиной. После изменения количества, динамической скидки или доставки цифры разойдутся.

Что Тильда уже делает

Родное поле содержит .t-inputpromocode и кнопку .t-inputpromocode__btn. Нажатие запускает t_input_promocode__applyPromoCode, а проверка уходит на серверный адрес payment/promocode/ вместе с id проекта.

Успешный ответ попадает в window.tcart.promocode. Затем tcart__calcPromocode пересчитывает итог с учётом обычной и динамической скидки. Второй активный объект код не записывает — рантайм сообщает, что промокод уже был активирован.

Отсюда правило для дизайнерского решения: не подменять эти шаги. Проверить своё условие, показать понятное объяснение и при успехе пропустить родную активацию.

Почему проверка в preview вводит в заблуждение

В режиме редактора и предварительного просмотра серверная функция выходит раньше запроса. В словаре рантайма даже есть отдельное сообщение: функциональность активации надо проверять после публикации.

Для теста создайте:

  1. отдельный промокод с небольшим лимитом;
  2. товар или набор товаров для тестовой корзины;
  3. опубликованную скрытую страницу;
  4. таблицу ожидаемых результатов.

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

Условия, которые можно проверить в браузере

Минимальная сумма

Перед активацией сравнить актуальную сумму товаров с порогом. Надо заранее решить, учитывается ли доставка и уже применённая динамическая скидка. Фраза «от 5000 ₽» без этого правила двусмысленна.

Наличие конкретного товара

Проверять uid или sku в window.tcart.products, а не видимый заголовок карточки. Название клиент может изменить, идентификатор остаётся частью данных корзины.

Запрещённые сочетания

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

Период кампании

Дата в браузере подходит как дружелюбная предварительная проверка, но не как защита: часы пользователя можно изменить. Окончательный срок должен контролировать сервер, который выдаёт промокод.

Почему localStorage — не «один раз на человека»

Хранилище узнаёт браузер, а не человека. Ограничение исчезнет, если посетитель:

  • откроет другой браузер или устройство;
  • включит приватный режим;
  • очистит данные сайта;
  • оформит заказ от другого домена.

Такой флаг полезен против случайного повторного нажатия, но его нельзя продавать как защиту бюджета скидок. Для строгого правила нужна история заказов на сервере.

MOD-175 поэтому обещает только проверяемую часть: условия по корзине перед штатной серверной активацией. Расчёт скидки и идентификация покупателя в мод не входят.

Чек-лист сдачи акции клиенту

  • Точный список разрешённых товаров зафиксирован по uid или sku.
  • Указано, какая сумма сравнивается с порогом.
  • Ошибка объясняет, что покупателю сделать дальше.
  • Тест проведён на опубликованной странице.
  • Клиент знает общий лимит и срок промокода.
  • Правило «один раз» не заявлено без серверной проверки.

Так дизайнер сдаёт не поле с загадочным кодом, а воспроизводимый сценарий акции.

Вопросы по этой статье 4

Надёжно — только на сервере, где есть аккаунт, заказ или другой устойчивый идентификатор. localStorage защищает лишь от случайного повторения в одном браузере.