Как разрешить активацию промокода только от определённой суммы Tilda
Бассейн на дачу
SKU: 700.435667
40000
р.
70000
р.
Сборный каркасный бассейн серии Intex Prism Frame прямоугольной формы в DELUXE комплектации с фильтр-насосом, лестницей. Запатентованная технология SUPER-TOUGH обеспечивает надежность и долговечность бассейна

Как разрешить активацию промокода только от определённой суммы Tilda

Применить промокод в корзине можно только если достигнута определённая сумма заказа
1
Создали корзину с полем промокод (тестовый промокод для примера D15)
2
Создали блок BF503 со ссылкой #popup:error
Задали заголовок - Ошибка!
Задали описание -
Чтобы сработал промокод - цена заказа должна быть выше 100 000 руб
3
Добавили блок Т123 и вставили в него код
В коде заменили свой лимит для промокода
//Лимит для промокода
const limit = 100000;
Библиотека для примера
<script>
(function () {
    //Лимит для промокода
    const limit = 100000;
    const errorPopupLink = "#popup:error";
    
    t_onReady(function() {
        setTimeout(function() {
            t_onFuncLoad('tcart__init',function() {
                promocodeControl();
            });
        },200);    
    });
    
    function promocodeControl(){                      
        let saveinputPC=null;
        const cartID = document.querySelector('div[data-record-type="706"]')?.getAttribute('id').replace(/[^0-9]/g, '');
        const pcLid = document.querySelector('.t-input-group_pc')?.getAttribute('data-input-lid');
        const popupErrorId = document.querySelector(`[data-tooltip-hook="${errorPopupLink}"]`)?.closest('[data-record-type="390"]')?.getAttribute('id').replace(/[^0-9]/g, '');
        
        
        if(pcLid!=undefined && popupErrorId!=undefined){
            const wrapperPromocode = document.createElement('div');
            
            const promocodeBtn = document.querySelector('.t-inputpromocode__btn');
            wrapperPromocode.classList.add('pcodeWrp', 'blok-promo');
            promocodeBtn.parentNode.insertBefore(wrapperPromocode, promocodeBtn);
            wrapperPromocode.appendChild(promocodeBtn);
            saveinputPC = document.querySelector('.t-inputpromocode__wrapper').innerHTML;
        
            document.addEventListener('click', function(event) { 
                if(event.target.closest('.pcodeWrp')) {
                    if((+tcart.prodamount)<limit){
                        t390_showPopup(popupErrorId);
                    };
                };
            });
            
            
            function changePromo(){
                let summ = +tcart.prodamount;
                const promoWrp = document.querySelector('.pcodeWrp');
                if(summ>=limit){
                    if(promoWrp!=null)  promoWrp.classList.remove('blok-promo');
                }else{
                 
                    if(promoWrp!=null){
                       promoWrp.classList.add('blok-promo'); 
                    };
                    
                    if ( window.tcart.promocode?.message=='OK' ){
                        delete window.tcart.promocode; 
                        tcart__updateTotalProductsinCartObj();
                        tcart__reDrawTotal();
                        document.querySelector('.t-inputpromocode__wrapper').innerHTML = saveinputPC;
                        t_input_promocode_init(cartID,pcLid);
                    };
                };
            }; 
            
            changePromo();
            
            const observer = new MutationObserver(mutationRecords => {
                changePromo()
            });
            const elem  = document.querySelector('.t706__cartwin-products');
            observer.observe(elem, {
              childList: true, 
              subtree: true, 
              characterDataOldValue: true
            });
        };
        
    };

})();  
</script>


<style>
.t-inputpromocode__wrapper {
    display: flex !important;
}
.t-inputpromocode__btn {
    height: 56px !important;
}    
.pcodeWrp {
    cursor: pointer;
}
.pcodeWrp.blok-promo>div {
    pointer-events: none;
}
</style>
Made on
Tilda