Сейчас узнаем, какой подарок выпадет именно Вам
Крутите колесо
Как запретить оплату определённых товаров в корзине Tilda

Как запретить оплату определённых товаров в корзине Tilda

1
Создали товары в каталоге с артикулом
2
Создали платёжные системы, включая оплату наличными
3
Вставили код в блок Другое - Т123
Артикулы нужных товаров прописали в коде

"SRT23794",
"SRT23710-1"
Библиотека примера
<script>
    const artList = [
        "SRT23794",
        "SRT23710-1"
    ];
    
    const titleText = ' товара под заказ согласовывает менеджер';
    const buttonText = 'Оформить заявку';
    
    
    
    let findPosition = false;
    let paymTitle = '';
    
    
    function t_onReady(callback) {
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', callback);
        } else {
            callback();
        }
    }
    
    
    function t_onFuncLoad(funcName, callback) {
        const checkFunction = () => {
            if (window.tcart && window.tcart[funcName]) {
                callback();
            } else {
                setTimeout(checkFunction, 100);
            }
        };
        checkFunction();
    }
    
    t_onReady(function() {
        setTimeout(function() {
            t_onFuncLoad('tcart__init', function() {
                // Получаем оригинальный текст кнопки
                const submitBtn = document.querySelector('.t706 .t-submit span');
                let btnText = submitBtn ? submitBtn.textContent : '';
                
                // Получаем заголовок способа оплаты
                const paymentTitleEl = document.querySelector('.t-input-group_pm .t-input-title');
                paymTitle = paymentTitleEl ? paymentTitleEl.textContent : '';
                
    
                function checkProductInCart() {
                    findPosition = false;
                    
                    if (!window.tcart || !window.tcart.products) {
                        unBlockPayment();
                        return;
                    }
                    
                    const productNum = window.tcart.products.length;
                    
                    for (let i = 0; i < productNum; i++) {
                        let artInCart = window.tcart.products[i].sku;
                        
                        for (let j = 0; j < artList.length; j++) {  
                            if (artInCart == artList[j]) {
                                findPosition = true;
                                break;
                            }
                        };
                        
                        if (findPosition) break;
                    };
                    
                    if (findPosition) {
                        blockPayment();
                    } else {
                        unBlockPayment();
                    }
                }; 
    
                function blockPayment() {
                    const titleBlockMode = titleText;
                    
                    // Разблокируем и выбираем оплату наличными
                    const cashRadio = document.querySelector('input[type="radio"][value="cash"]');
                    if (cashRadio) {
                        cashRadio.disabled = false;
                        cashRadio.checked = true;
                        const event = new Event('change', { bubbles: true });
                        cashRadio.dispatchEvent(event);
                    }
                    
                    // Блокируем другие способы оплаты
                    const paymentRadios = document.querySelectorAll('.t-radio__wrapper-payment input[type="radio"]');
                    paymentRadios.forEach(radio => {
                        if (radio.value !== 'cash') {
                            radio.disabled = true;
                        }
                    });
                    
                    // Добавляем класс блокировки
                    const paymentWrappers = document.querySelectorAll('.t-radio__wrapper-payment');
                    paymentWrappers.forEach(wrapper => {
                        wrapper.classList.add('blkpayment');
                    });
                    
                    // Скрываем блок способа оплаты
                    const paymentBlock = document.querySelector('.t-input-group_pm .t-input-block');
                    if (paymentBlock) {
                        paymentBlock.style.display = 'none';
                    }
                    
                    // Меняем текст кнопки
                    const submitBtn = document.querySelector('.t706 .t-submit span');
                    if (submitBtn) {
                        submitBtn.textContent = buttonText;
                    }
                    
                    // Меняем заголовок
                    const paymentTitleEl = document.querySelector('.t-input-group_pm .t-input-title');
                    if (paymentTitleEl) {
                        paymentTitleEl.textContent = paymTitle + titleBlockMode;
                    }
                }
                
                function unBlockPayment() {
                    // Разблокируем все способы оплаты
                    const paymentRadios = document.querySelectorAll('.t-radio__wrapper-payment input[type="radio"]');
                    paymentRadios.forEach(radio => {
                        radio.disabled = false;
                    });
                    
                    // Убираем класс блокировки
                    const paymentWrappers = document.querySelectorAll('.t-radio__wrapper-payment');
                    paymentWrappers.forEach(wrapper => {
                        wrapper.classList.remove('blkpayment');
                    });
                    
                    // Показываем блок способа оплаты
                    const paymentBlock = document.querySelector('.t-input-group_pm .t-input-block');
                    if (paymentBlock) {
                        paymentBlock.style.display = '';
                    }
                    
                    // Восстанавливаем текст кнопки
                    const submitBtn = document.querySelector('.t706 .t-submit span');
                    if (submitBtn && btnText) {
                        submitBtn.textContent = btnText;
                    }
                    
                    // Восстанавливаем заголовок
                    const paymentTitleEl = document.querySelector('.t-input-group_pm .t-input-title');
                    if (paymentTitleEl && paymTitle) {
                        paymentTitleEl.textContent = paymTitle;
                    }
                }
    
                // Наблюдатель за изменениями в корзине
                const cartElement = document.querySelector(".t706__cartwin-products");
                if (cartElement) {
                    const observer = new MutationObserver(function(mutations) {
                        checkProductInCart();
                    });
                    
                    observer.observe(cartElement, {
                        childList: true,
                        subtree: true,
                        characterData: true
                    });
                }
                
                // Первоначальная проверка
                setTimeout(checkProductInCart, 100);
            });
        }, 200);    
    });
</script>


<style>
.blkpayment {opacity: 0.3}    
</style>
Made on
Tilda