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

Как изменить ссылку у кнопки в карточке товара в Тильда

1
Создали блок для каталога товаров
2
В коде заменили ссылку на свою
const buttonLink = "https://yandex.ru";
3
Вставили код на страницу в блок Т123
Код вставляется в footer (основной и каталога)
Mo-ti Level Up
Видео инструкции по добавлению кода и работе с Zero Block.
Как изменить ссылку у кнопки в карточке товара в Тильда
Фрагмент видео
Библиотека для примера
<script>
(function() {
    const buttonLink = "https://yandex.ru";
    const query = false; // При false — будет подставляться название товара
    const linkSectionTemplate = "?text=Добрый  день. Интересует этот товар: {{product}}";
    

    function buildButtonUrl(productName = '') {
        if (!query) return buttonLink;

        const [paramName, paramValueTemplate] = linkSectionTemplate.split('=');

        const paramValue = paramValueTemplate.replace('{{product}}', productName || '');
        const encodedValue = encodeURIComponent(paramValue);
        return `${buttonLink}${paramName}=${encodedValue}`;
    }

    function findOrderButton(el) {
        return el.querySelector('a[href="#order"]') || 
               el.querySelector('a[data-order-button="yes"]');
    }
    
    document.addEventListener("DOMContentLoaded", function() {

    let snippetSearchRepeat = 0;
    let tistore = setInterval(function() {
            const productListNum = document.querySelector('.t-store__product-snippet');
            if(productListNum?.hasAttribute("data-product-url")){
                clearInterval(tistore);
                changeButtonLink();
            }
            snippetSearchRepeat++;
            if(snippetSearchRepeat > 50) clearInterval(tistore);
    }, 100);   

    document.querySelectorAll(".js-store-grid-cont")
        .forEach(el => el.addEventListener('tStoreRendered', changeButtonLink));    
        
    document.querySelectorAll(".js-catalog-grid-cont")
        .forEach(el => el.addEventListener('tStoreRendered', changeButtonLink));    
    
    document.querySelectorAll(".js-product-single")
        .forEach(el => el.addEventListener('tStoreSingleProductsLoaded', changeButtonLink));    
    
    function changeButtonLink(){
        setTimeout(function(){
           
            document.querySelectorAll(".t-store__relevants-grid-cont")
                .forEach(el => el.addEventListener('tStoreRendered', changeButtonLink));  
            document.querySelectorAll(".t-catalog__relevants-grid-cont")
                .forEach(el => el.addEventListener('tStoreRendered', changeButtonLink));  
                
         
            document.querySelectorAll(".js-product").forEach(function (el) {
                
                const orderButton = findOrderButton(el);
                
                if(orderButton){
                    const productName = query 
                        ? el.querySelector('.js-product-name')?.innerText?.trim() 
                        : '';
                    
                    orderButton.setAttribute('href', buildButtonUrl(productName));
                    
                    if (!orderButton.hasAttribute('data-order-button')) {
                        orderButton.setAttribute('data-order-button', 'yes');
                    }
                };
            });
            
        }, 300);
    };

    document.addEventListener('click', function(event) { 
        if(event.target.closest('a[href*="/tproduct/"]')) changeButtonLink();
    });
    
    document.addEventListener('change', function(event) { 
        if(event.target.closest('.js-product-controls-wrapper')) changeButtonLink();
    });
    
    });
})();
</script>
Made on
Tilda