Штатно Тильда применяет промокод ко всей корзине. Моё решение считает скидку только для нужных товаров или категорий — по ID, без программиста и без переделки магазина.
Доступ к материалам и обновлениям на 30 дней · инструкция и поддержка включены
Стандартный ответ поддержки Tilda — «применить промокод к отдельным товарам нельзя». Это решение снимает ограничение: скидка считается только там, где вы разрешили.
Создавайте сколько угодно промокодов — каждый действует на свой список товаров, вариаций или категорий. Позиции указываются по ID: не важно, сколько товаров в корзине, скидка посчитается только для нужных.
Укажите ID категории — промокод применится ко всем её товарам. А один переключатель в правиле включает скидку сразу на весь каталог магазина.
Промокод действует на всё, кроме указанных товаров или целых категорий. Например «на весь каталог, кроме новинок» — исключённые позиции просто не участвуют в расчёте скидки.
Один и тот же промокод может давать разную скидку в зависимости от категории, товара или вариации. Например SALE: −20% на обувь и −10% на аксессуары.
Промокод активируется только на разрешённый товар. Если в корзине посторонние позиции — поле ввода скрывается, а скидка сбрасывается.
Установленный код продолжает работать и после 30 дней. Доступ нужен для получения обновлений и материалов — продлить можно повторной покупкой по той же цене.
Упрощённая версия: разрешает ввод промокода, только когда в корзине один товар с заданным названием. Отлично подходит, чтобы понять принцип работы и проверить на своём магазине.
Сразу после оплаты получаете материалы: готовый код в двух вариантах и подробную инструкцию со скриншотами.
Копируете код в HEAD проекта и прописываете правила: промокод, размер скидки и ID товаров, вариаций или категорий. По инструкции это занимает около 10 минут.
Тестируете корзину — скидка считается только для разрешённых товаров. Если что-то не получается, пишите в Telegram: помогу с установкой.
«Заказчик просил промокод на определённые товары — хотели уже заказывать разработку у программиста, но нашли готовое решение здесь. Владимир помог подобрать вариант, после покупки пришла понятная инструкция со скринами на каждом шаге. Поддержка в Telegram отвечает моментально».
«Понятная пошаговая инструкция — настроила всё минут за 10. Очень рекомендую, 10 из 10».
«Теперь у нас система с промокодами на конкретные товары и больше никакой путаницы: акции не суммируются с промокодами. Быстро внедрили на сайт, Владимир оперативно ответил на все вопросы и помог настроить».
«Долго искала решение — Тильда за много лет так и не сделала промокоды на отдельные товары. Владимир ответил очень быстро, вместе подобрали конфигурацию под мой проект. Работа была комфортной, большое спасибо!»
«Купил решение №8. Подробная консультация и помощь в настройке — всё работает отлично. Рекомендую».
«Возникли сложности с установкой — написала в Telegram, подсказали, что поменять в коде, и всё заработало. На всё ушла пара часов. Большое спасибо!»
Готовый код, инструкция и поддержка. Установка за 10 минут — без программиста и переделки магазина.
Вставьте код в HEAD проекта (Настройки сайта → Ещё) или в footer страницы с корзиной. В переменной my_name_tovar1 укажите название вашего товара — точно как в карточке.
<script>
//console.log для тестирования
//!!!!Здесь между кавычек вводим название товара на который будет разрешен ввод промокода!!!!
var my_name_tovar1 = "Шапка с шерстью";
//далее идет код и в нем по факту ничего менять не надо
//глобальная переменная проверки обмана
var rouge_chek_var = "false";
//глобальная переменная активирован промокод или нет
var status_aktivate_promocode = "false"
//глобальная переменная получения введенного промокода
var status_value_promocode ="none";
window.addEventListener('load', (event) => {
//ЗАПУСКАЕМ ФУНКЦИЮ ПРОВЕРКИ ОТКРЫТИЯ КОРЗИНЫ каждую 200 = 0.2 сек
let timer_cart_check = setInterval(check_open_cart, 200);
//ищем кнопку активации промокода чтобы повесить функцию активации
promocode_button = document.querySelector(".t-inputpromocode__btn");
promocode_button.onclick = function() {
promocode_aktive();
//console.log(status_value_promocode);
//console.log(status_aktivate_promocode);
};
});
//ФУНКЦИЯ ПРОВЕРКИ ОТКРЫТИЯ КОРЗИНЫ
function check_open_cart(){
//ищем тег body для отслеживания его изменения
my_popup = document.querySelector(".t-body");
//проверяем имеет ли тег body нужный класс
isVisiblePOPUP = my_popup.classList.contains("t706__body_cartwinshowed");
//проверяем открыта ли корзина
if( isVisiblePOPUP == true){
//запускаем функцию проверки совпадения товаров
cart_vse_tovary();
}
};
//ФУНКЦИЯ ОБНАРУЖЕНИЯ И СОВПАДЕНИЯ ТОВАРОВ В КОРЗИНЕ
function cart_vse_tovary(){
//Ищем контейнер в корзине со всеми товарами
vse_tovari_container = document.querySelectorAll(".t706__product .t706__product-title");
//если в корзине больше 1 товара - деактивируем ввод промокода
if (vse_tovari_container.length > 1){
//запускаем функцию поиска промокода
find_promocode_area();
//прячем ввод промокода
promocode_area.style.display = "none";
//деактивируем промокод
deactivate_promocode()
//проверка условия если промокод активирован чтобы включить обман
if (status_aktivate_promocode == "true"){
rouge_check();
};
}
//если в корзине только 1 товар то можем активировать промокод
else if(vse_tovari_container.length = 1){
//перебираем все товары внутри массива полученных названий
vse_tovari_container.forEach(my_tovar => {
// проверка наличия названия товара из глобальной переменной my_name_tovar1
if (my_tovar.innerHTML.indexOf(my_name_tovar1) >= 0){
//запускаем функцию поиска промокода
find_promocode_area();
//показываем ввод промокода
promocode_area.style.display = "block";
//проверка условия если промокод активирован и был активирован обман
if (status_aktivate_promocode == "true" && rouge_chek_var == "true"){
//скрываем ввод промокода
promocode_area.style.display = "none";
};
}
else if (my_tovar.innerHTML.indexOf(my_name_tovar1) == -1){
//запускаем функцию поиска промокода
find_promocode_area();
//прячем ввод промокода
promocode_area.style.display = "none";
//деактивируем промокод
deactivate_promocode()
//проверка условия если промокод активирован чтобы включить обман
if (status_aktivate_promocode == "true"){
rouge_check();
};
}
});
}
};
//ФУНКЦИЯ НАХОЖДЕНИЯ ПОЛЯ ДЛЯ ВВОДА ПРОМОКОДА
function find_promocode_area(){
promocode_area = document.querySelector('.t-input-group_pc');
};
//ФУНКЦИЯ ДЕАКТИВАЦИИ ПРОМОКОДА
function deactivate_promocode(){
window.tcart.promocode = "";
tcart__reDrawTotal();
tcart__updateTotalProductsinCartObj();
};
//ФУНКЦИЯ ПРОВЕРКИ ОБМАНА
function rouge_check(){
rouge_chek_var = "true";
};
//ФУНКЦИЯ ВКЛЮЧЕНИЯ РЕЖИМА АКТИВНОГО ПРОМОКОДА
function promocode_aktive(){
promocode_input = document.querySelector('.t-inputpromocode');
status_value_promocode = promocode_input.value;
status_aktivate_promocode = "true"
}
</script>