Сейчас узнаем, какой подарок выпадет именно Вам
Крутите колесо
Ура, вы выиграли!
Ваш приз:
Годовой доступ
к видео на mo-ti -20%
по промокоду T19RAY
Промокод действителен 3 дня

Оформить доступ с промокодом
100
Как ограничить выбор доставки для определённых товаров в Tilda

Как ограничить выбор доставки для определённых товаров в Tilda

Пример позволяет принудительно включить определённую доставку, если в корзину попадают товары с указанным артикулом в коде.
Например, если попадает что-то из одежды, то необходима только доставка с примеркой
1
Создали список доставок в корзине.
Нужный вид доставки сделали самым последним
(пример на скрине ниже)
2
Вставили код в блок Т123

В коде прописали артикулы товаров для нашей доставки
const skuList = [
'TK-2267',
];
Библиотека для примера
<script>
document.addEventListener("DOMContentLoaded", function() {
    (function () {
        setTimeout(function() {
            
            //Артикулы товаров
            const skuList = [
            
                'TK-2267',
                
            ];
            
            const prodamount  = document.querySelector('.t-radio__wrapper-delivery');
            const continueCartBtn = document.querySelector('.t706__sidebar-continue');
            
            continueCartBtn.addEventListener('click', function(event) {
                setTimeout(function() {
                        checkSkuInCart();
                }, 500);
            });
            
            if(prodamount!=null){
                const observer = new MutationObserver(mutationRecords => {
                    setTimeout(function() {
                        checkSkuInCart();
                    }, 500);
                });
                
                observer.observe(prodamount, {
                    childList: true, 
                    subtree: true, 
                    characterDataOldValue: true
                });
                

                let hidePaymentMode = true;
                let showPaymentMode = true;
                
                const cart = document.querySelector('.t706');
                
                let cartPage = document.querySelector('.t706__cartpage-products');
                if(cartPage==null) cartPage = document.querySelector('.t706__cartwin-products');

                function checkSkuInCart(){
                    
                    const prodList = cartPage.querySelectorAll('.t706__product');
                    if(prodList.length){
                        
                        let skuDetected = false;
                        
                        for(let i=0; i<prodList.length;i++){
                            const skuText = prodList[i].querySelector('.t706__product-title').textContent;
                            for(let j=0; j<skuList.length;j++){
                                if(skuText.includes(skuList[j])) skuDetected=true;
                            };
                        };
                        const firstDelivery = document.querySelector('#delivery-services-wrapper label:first-child input');
                        const lastDelivery = document.querySelector('#delivery-services-wrapper label:last-child input');
                        if(skuDetected){
                            if(hidePaymentMode){
                                cart.classList.add('show-delivery');
                                lastDelivery.checked = true;
                                lastDelivery.dispatchEvent(new Event('change', { bubbles: true }));
                                hidePaymentMode=false;
                                showPaymentMode=true;
                            };
                        }else{

                            if(showPaymentMode){
                                cart.classList.remove('show-delivery');
                                firstDelivery.checked = true;
                                firstDelivery.dispatchEvent(new Event('change', { bubbles: true }));
                                hidePaymentMode=true;
                                showPaymentMode=false;
                            };
                        };
                    };
                };
            };
        }, 1500);
    })();    
});    
</script>


<style>
div#delivery-services-wrapper label:last-child {
    display: none;
}
.show-delivery div#delivery-services-wrapper label:last-child {
    display: inline-block;
}
.show-delivery div#delivery-services-wrapper label:not(:last-child) {
    display: none;
}
</style>
Made on
Tilda