Промокод на определенный товар Тильда

Ответом на вопрос — штатными средствами пока никак. Однако, при помощи Java Script можно внедрить на странице с корзиной пользовательский код, который позволит контролировать введенное значение в поле ввода промокода. Готовый код и демонстранция ниже

Создаем промокод

Чтобы создать промокод, нужно перейти в «Настройки сайта«, Далее «Платежные системы». Далее «Промокоды»

Нажимаем «Добавить промокод» и заполняем форму

Здесь все интуитивно понятно. Единственное обратите внимание на пункт «Скидка», если вы указываете сумму в рублях, то просто пишите число. если скидка в процентах то пишите число и символ %, например 10%

Устанавливаем код

По факту код устанавливать надо туда где есть корзина. Это либо общий footer сайта и footer товара — тогда у вас будет две копии кода, либо размещаем код в header в настройках сайта — тогда у вас будет один код. Здесь уже смотрите сами как удобно вам для вашего проекта

Первым делом определяемся с тем на какой товар можно будет активировать промокод. В моем примере это будет «Шапка с шерстью»

Внутри кода в переменную «my_name_tovar1» прописываем название товара, так как указано в карточке товара, либо так, как отображается внутри просмотрщика кода при попытке проверить товар.

<script>
//console.log для тестирования

//!!!!Здесь между кавычек вводим название товара на который будет разрешен ввод промокода!!!!
var 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(){
    //глобальный маркер открытия КОРЗИНЫ
    //var my_cart_opened = "korzina_otkrita";
    
    //ищем тег body для отслеживания его изменения
    my_popup = document.querySelector(".t-body");
	
    
    //проверяем имеет ли тег body нужный класс
    isVisiblePOPUP = my_popup.classList.contains("t706__body_cartwinshowed");
    
	
    //проверяем открыта ли корзина
    if( isVisiblePOPUP == true){
        //console.log("КОРЗИНА ОТКРЫТА");   
     
        //запускаем функцию проверки совпадения товаров
        cart_vse_tovary();
    }
    
    //console.log(isVisible);
    //console.log("ТЕСТ ЗАПУСКА 1 сек");
};


//ФУНКЦИЯ ОБНАРУЖЕНИЯ И СОВПАДЕНИЯ ТОВАРОВ В КОРЗИНЕ
function cart_vse_tovary(){
    
    //Ищем контейнер в корзине со всеми товарами
    vse_tovari_container = document.querySelectorAll(".t706__product .t706__product-title");
    //console.log(vse_tovari_container);
    //console.log(vse_tovari_container.length);
    
    //проверка длины массива если больше 1 значит в корзине кроме промо - товара может быть еще. Поэтому деактивируем ввод промокода
    if (vse_tovari_container.length > 1){
        //console.log("БОЛЬШЕ ОДНОГО ТОВАРА В КОРЗИНЕ");
        
        //запускаем функцию поиска промокода
        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){
        //console.log("1 ТОВАР В КОРЗИНЕ");
        
        //перебираем все товары внутри массива полученных названий
        vse_tovari_container.forEach(my_tovar => {
            //console.log(my_tovar.innerText);
            
                // проверка наличия названия товара из глобальной переменной my_name_tovar1
                if (my_tovar.innerHTML.indexOf(my_name_tovar1) >= 0){
                    //console.log("Нашел ТОВАР");
                    
                    //запускаем функцию поиска промокода
                    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){
                    //console.log("ТОВАР НЕ ТОТ");
                
                    //запускаем функцию поиска промокода
                    find_promocode_area();
                    
                    //прячем ввод промокода
                    promocode_area.style.display = "none"; 
                    
                    //деактивируем промокод
                    deactivate_promocode()
                    
                    //проверка условия если промокод активирован чтобы включить обман
                    if (status_aktivate_promocode == "true"){
                        rouge_check();
                    };
                }
        });
    }
    
    //проверка длины массива если больше 1 значит в корзине кроме промо - товара может быть еще. Поэтому деактивируем ввод промокода
    if (vse_tovari_container.length == 0){
        //console.log("В КОРЗИНЕ НЕТ НИ ОДНОГО ТОВАРА");
    }
};


//ФУНКЦИЯ НАХОЖДЕНИЯ ПОЛЯ ДЛЯ ВВОДА ПРОМОКОДА
function find_promocode_area(){
    promocode_area = document.querySelector('.t-input-group_pc');
    //console.log(promocode_area.innerHTML);
};

//ФУНКЦИЯ ДЕАКТИВАЦИИ ПРОМОКОДА
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>

Готовые решения по промокодам Тильды

Я знаю, как трудно найти полезную информацию о промокодах Tilda в этом океане цифрового творчества. Сам, как веб-дизайнер, сталкивался с нехваткой реально рабочего кода по этой теме.

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

Во все решения включено: готовый код, инструкция по установке, обратная связь по общим вопросам

🎓 Решение 1: Промокоды можно применить только на определенные категории товаров. Неважно сколько товаров внутри категорий, на всех них будет применяться логика проверки применения \ запрета промокода.
Стоимость: 3 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/first

🚀 Решение 2: Определенные промокоды можно применить для получения заданного подарка, если в корзине набрано товаров на заданную минимальную сумму
Стоимость: 6 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/second

🔍Решение 3: Промокоды можно активировать на определенные один или несколько товаров, проверка идет по SKU \ Габаритам \ ID товаров \ Названию товаров
Стоимость: 3 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/third

👜 Решение 4: Промокоды нельзя активировать на определенные один или несколько товаров, проверка идет по SKU \ Габаритам \ ID товаров \ Названию товаров
Стоимость: 3 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/forth

😱 Решение 5: Промокоды можно применить, только когда есть 2 определенных товара в корзине одновременно, проверка идет по SKU \ Габаритам \ ID товаров \ Названию товаров
Стоимость: 3 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/fifth

😱 Решение 6: Две группы (одна или несколько штук в каждой) промокодов можно применить, каждая группа на свои один или несколько товаров, проверка идет по SKU \ Габаритам \ ID товаров \ Названию товаров
Стоимость: 6 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/uni-promo

💪 Решение 7: Определенные промокоды можно применять только на конкретные категории, но на эти категории, можно применять и другие промокоды (общие), которые для всех товаров разрешены
Стоимость: 3 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/seven

💪 Решение 8: Промокод применяется для одного конкретного товара, но расчет суммы скидки идет только для него, поэтому не важно сколько разных товаров в корзине, скидка по промокоду посчитается только для него
Стоимость: 3 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/eight

Как со мной связаться

Если вы не нашли вашего решения в текущей статье, а также на страницах моих онлайн — уроков по промокодам в Тильда https://web4life.ru/curs-promo/ Тогда присылайте ваше ТЗ задание под ваш проект.
Пишите https://t.me/vbalakin буду рад помочь с доработкой.

История обновлений

Обновлено 16.08.2024: Добавлено 8 решение, благодаря которому появилась возможность менять величину скидки по промокоду. Тем самым появилась возможность применять промокод на конкретный товар в корзине, так чтобы скидка считалась только для него и не важно сколько товаров в корзине, процент посчитается только для конкретного товара, а не всей суммы корзины..

Обновлено 10.07.2024: Полностью обновил все решения. Теперь управление активацией и видимостью промокодов стало еще функциональнее, проверки товаров осуществляются по SKU, по габаритам товаров, по названию из каталога , по ID товаров. Перераспределил все решения, чтобы вам было понятнее, какое именно подойдет. Все это оказалось возможным благодаря вашей обратной связи при использовании решений в своих проектах.

#Это позволит решить следующие проблемы: можно ли в тильде задавать условия промокодов от определенной суммы, как добавить промокод для покупателя на тильде, как убрать сумму в корзине тильда, форма пожертвований на сайт для тильда

Еще материалы

Комментарии

  1. Екатерина сказал:

    Обратились через телеграм к Владимиру за платной реализацией задачи: промокод + подарок + от определенной суммы. За два дня задача была решена, клиент доволен, мы — как представили агентства тоже довольны) Спасибо, Владимир!

    • webvova сказал:

      Спасибо большое за ваш отзыв, благодаря вашей задаче теперь готовлю новое решение, так как ваша задача была довольно интересной и самое главное нужной для интернет — магазинов

  2. Яна сказал:

    Хотела поблагодарить за отличное решение по промокодам. Купила готовую реализацию для своего интернет — магазина. Возникли сложности с установкой, но написала Владимиру лично в телеграм. Он подсказал что нужно изменить в его готовом коде, чтобы заработало. На все ушло всего пару часов. большое вам спасибо!!!!!!!!!!

    • webvova сказал:

      И вам большое спасибо за проявленный интерес. Если еще будут вопросы, пишите, я на связи.

  3. Роман сказал:

    А можно реализовать создание уникальных промокоды? Хочется доказать купон на скидку при первой покупке, но если сделать безлимитный промокод с фикс названием, то ведь покупатель может и во 2 раз его применить ? Можете подсказать как это решить ?

    • webvova сказал:

      Поразмыслил я над вопросом. Нет нельзя. Например в ворпресс/woocommerce можно так как там есть контроль учетки и промокодов на его активацию конкретным юзером. В тильде ничего такого и нет. Да и кодом никак не отмледить даже если включили через JS передачу активаций в сессию.

  4. Виктория сказал:

    Или я туплю, или тут есть лазейка:

    если взять товар «стекло» применить промокод, выйти из корзины и закинуть товар «картон», то промокод применится.

    • webvova сказал:

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

    • Анастасия сказал:

      А можно сделать, чтобы при закрытии корзины не удалялись из неё все товары, а только сбрасывался промокод?

    • webvova сказал:

      Данный комментарий не актуален, так как код я обновил 10.07.2024 и в нем теперь совершенно другой функционал. Но комментарий решил оставить для истории.

    • webvova сказал:

      Данный комментарий не актуален, так как код я обновил 10.07.2024 и в нем теперь совершенно другой функционал. Но комментарий решил оставить для истории.

  5. Лена сказал:

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

    • webvova сказал:

      Пока на мой взгляд никак. Промокоды применяются только ко всей сумме заказа. Мой вариант только не даст применить промокод в текущем исполнении.

    • webvova сказал:

      Обновление от 16.08.24. Теперь в решении 8 появилась возможность реализовать такую штуку. Если в корзине пять товаров, а нам нужно применить промокод только на 1, то скидка посчитается только для него, остальные 4 товара будут идти по своей обычной цене

  6. Роман сказал:

    Добрый день.
    Верно ли понимаю, что если при такой реализации покупатель сначала применит промокод (скидка зафиксируется в итоговой сумме), а потом вернется на страницы каталога и добавит товар в другой упаковке (на которую этот промокод распространяться не должен), то скидка все равно останется?

    • webvova сказал:

      Вообще я тестировал такой вариант. И чтобы его исключить, настраивал уже саму корзину в тильда. Там есть опция удаления всего из заказа при закрытии корзины. А так можно скрипт допилить и на вариант отмены применения после закрытия корзины. Все зависит от вашей задачи

    • webvova сказал:

      Данный комментарий не актуален, так как код я обновил 10.07.2024 и в нем теперь совершенно другой функционал. Но комментарий решил оставить для истории.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *