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

Ответом на вопрос — штатными средствами пока никак. Однако, при помощи 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.

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

Решение 8:

💪 Промокоды можно применить для множества товаров и вариаций, которые указываются по их ID. Расчет суммы скидки идет только для указанных товаров, поэтому не важно сколько разных товаров в корзине, скидка по промокоду посчитается только для них. Однако, если на какой-либо из указанных товаров стоит цена со скидкой, то такой товар не учитывается при расчете, а скидка посчитается для остальных с нормальной ценой.
Совместимость:
+Автоматическое добавление дополнительного товара в корзину, при добавлении основного

Стоимость: 3 500 ₽ (включена инструкция по установке и настройке)
Приобрести здесь: https://web4life.ru/curs-promo/eight

Решение 9 (платформа ЛК):

— Вы можете создавать любое число уникальных промокодов, которые можно активировать только 1 раз на одного пользователя, при этом эти промокоды общие на все товары

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

Данное решение включает в себя:
— базовая платформа, готовая для установки последующих модулей
— уже рабочий модуль (установлен вместе с платформой) по работе с промокодами (контроль за количеством активаций, промокоды на определенные товары, общие промокоды)
— пошаговая инструкция по установке и работе с платформой (читать здесь)

Что входит дополнительно:
— консультация по общим вопросам, того что нет в инструкции или просто подсказать
— если у вас домен куплен в сервисе который не указан в инструкции и вы не знаете как создать поддомен lk, я помогу его создать бесплатно

Что не входит в стоимость:
— хостинг для размещения платформы, средняя цена хостинга на 12 месяцев варьируется от 2000 до 3000 ₽

Стоимость: 4 500 ₽
Приобрести здесь: https://web4life.ru/platform
Инструкция + подробности здесь: https://webvova.ru/blog/tilda/nastoyashhij-lichnyj-kabinet-dlya-internet-magazina-na-tilde/

Решение 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 товаров \ Названию товаров
Стоимость: 3 000 ₽
Приобрести здесь: https://web4life.ru/curs-promo/uni-promo

Решение 7:

Видео — демонстрация

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

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

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

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

Обновлено 8 решение + добавлено 9 решение 28.11.2024:

+ добавлен альтернативный вариант кода для 8 решения. Иногда на некоторых магазинах стоит сторонний код, который препятствует корректной обработке проверки условий выполнения по товарам. Поэтому переструктурировал логику проверки, чтобы если не работает основной, то альтернативный может помочь
+ для 8 решения введена корректировка количества загружаемых за раз товаров, установил по умолчанию 500 штук, так как большее количество вызывало в некоторых магазинах ошибки
+ добавлено 9 решение, которое является модулем будущей полноценной платформы для интернет — магазина на Тильде. Туда будут входить контроль отзывов, история покупок, бонусная программа, управление промокодами. 9 решение как раз и является модулем управления и контролем за активацией промокодов. Теперь есть возможность давать пользователю активировать промокод только 1 раз, например на первую покупку, а также создавать множество промокодов, каждый на свою группу товаров. Расчет скидки идет только на указанные товары. Своего рода сильно улучшенное 8 решение с внешней базой данных, обмен идет через API

Обновлено 8 решение + общее 05.11.2024:

+ добавлена поддержка учета вариаций товаров, если в качестве id на который работает промокод указана вариация товара, то тогда расчет скидки идет для нее, ранее код работал только на основной товар без вариаций. Если у вариации товара указана старая цена, то тогда она выбывает из расчета скидки
+ 1,2,3,4,5,6,7 решения, теперь самостоятельно определяют какая корзина установлена (окном, страница или пошаговая)
+ для всех решений по промокодам добавлена оптимизация расхода ресурсов. Когда корзина закрыта код неактивен

Обновлено 8 решение 31.10.2024:

+ теперь в переменную my_name_tovar1 можно добавлять много товаров, указывая только их ID, сумма скидки процентах будет считаться в зависимости от их наличия, а не от всей корзины
+ теперь скидка по промокоду не считается для указанных в переменной товарах, если у них стоит скидочная цена. Например 3 товара на которые можно применить промокод. 1 из них идет со скидкой, поэтому при наличии в корзине 3 товаров на которые действует промокод, скидка будет считать только для 2х из них, у которых обычная цена.
+ в переменную my_name_pomocode1 можно вводить любое количество промокодов, они все будут учитываться в корзине
+ теперь код сам определяет, какая перед ним корзина. Окном, пошаговая или отдельная страница
+ добавлена совместимость с решением по автоматическому добавлению дополнительных товаров при добавлении основного в корзину https://webvova.ru/blog/tilda/kak-dobavit-dopolnitelnye-tovary-v-korzine-v-tilda-pri-dobavlenii-osnovnogo/

Общее обновление от 16.08.2024

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

Общее обновление от 10.07.2024

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

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

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

Комментарии

  1. Кристина М. сказал:

    Купила решение номер 8. Понятная пошаговая инструкция, настроила все минут за 10. Очень рекомендую, 10 из 10 ⭐️

  2. Ирина EE сказал:

    Большое спасибо Владимиру за помощь во внедрении решения 8, очень оперативно ответил на все вопросы, объяснил нюансы и очень быстро все настроил! Будем рекомендовать и обращаться! Успехов и новых клиентов 🙂

  3. Ирина сказал:

    Благодарю за «решение 8». Быстро внедрили на сайт, Владимир очень заботливо и оперативно ответил на все вопросы и помог настроить. Теперь у нас супер-система с промокодами на конкретные товары и больше никакой путаницы. Все акции не суммируются с промокодами и все счастливы) алиллуйя, благодарю от души)

  4. Регина сказал:

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

  5. Вадим сказал:

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

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

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

    • webvova сказал:

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

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

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

    • webvova сказал:

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

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

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

    • webvova сказал:

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

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

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

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

    • webvova сказал:

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

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

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

    • webvova сказал:

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

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

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

    • webvova сказал:

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

    • webvova сказал:

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

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

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

    • webvova сказал:

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

    • webvova сказал:

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

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

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