Динамический план подписки в ZeroBlock на сайте на Тильда

Price
Budget per month
Save 20%
Unlimited influencer’s campaign, team members or integrations
All features:
AI assistant
Chats in 1 window
Easy report generation
Pay in 1 click
And more...
Как настроить зависимость текста от положения Количество (ползунок) из формы (условный прайс-калькулятор в Tilda)
Я перетаскиваю ползунок range slider и цифры Цены меняются автоматически в зависимости от положения ползунка.
И настраиваем зависимость цены от Месячного и Годового плана, чтобы они менялись при нажатии на кнопку "месяц" / "год".
Инструкция:

В Zero Block добавили:
  1. Форму с range-slider (имя переменной: сmail, val: 18, min: 0, max: 100, step: 4) и калькулятором (в формулу прописали имя переменной сmail)
  2. Текстовые элементы:
  • Стоимость в месяц (e.g: €60 / mo) - ссылка #emonth
  • Стоимость в год (e.g: €50 / mo) - ссылка #monthcur
  • Стоимость в год old (e.g: €60 / mo) - ссылка #emonthold
3. Две кнопки (e.g: Год, Месяц) - ссылка #type (на обе кнопки)
4. Шейп для динамической кнопки призыва к действию -> в него поместили текстовый элемент (e.g: Заказать) - ссылка #txtP

Копируем код ниже и вставляем в блок T123.
Далее меняем тексты в самом коде (смотри комментарии в коде)

<style>
a[href$="old"] {
    text-decoration: line-through !important;
}
a[href$="old"] , a[href$="cur"] , a[href="#boxes"] , a[href="#colont"] , a[href="#emonth"], a[href="#textyear"] , a[href="#txtP"] {
    pointer-events:none;
}

    a.tn-atom[href^="#"] , .type{
        transition: all 0.4s linear;
    }
.nopac{
    opacity:1 !important;
}   
.acttype{
    color: #000 !important; /*цвет текста активной кнопки Год/Месяц*/
    background-color: #fcb42f !important; /*цвет активной кнопки Год/Месяц*/
}
.t-range__value-txt , .t-range__interval-txt {
    display: none !important;
}

.form-calcy .t-input-group_fr {
    display: none;
}


</style>
<script>
$( document ).ready(function() {

var boxes = $('a[href="#boxes"]');
$('a[href="#colont"]').addClass('colont');
$('.colont:eq(1)').addClass('nopac');

$('a[href="#monthcur"]').addClass('monthY');
$('a[href^="#emonth"]').addClass('monthM');
$('a[href="#emonth"]').addClass('monthMn').hide();
$('a[href="#emonthold"]').addClass('monthMo');
$('a[href="#yearcur"]').addClass('yearY');
$('a[href="#yearold"]').addClass('yearM');
$('a[href="#textyear"]').addClass('textyear');
$('a[href="#txtP"]').addClass('txtP');

$('a[href="#type"]').addClass('type');
$('.type:last').addClass('acttype');  // замени last на first, если надо, чтобы изначально показывалась цена за месяц, а не за год.

$('.type').click(function(e){e.preventDefault();
    if(!$(this).hasClass('acttype')) {
    $('.type').removeClass('acttype');
    $(this).addClass('acttype');
    $('.monthMn , .monthY , .monthMo , .yearY , .yearM , .textyear ').toggle();
    };  
});

function explode(){
    var num =   $('.t-range__value-txt').html();
    
    function col(){
        if (num>80){$('.colont').removeClass('nopac'); //num>80 - выставьте свое значение, больше которого динамическая кнопка будет меняться
        $('.colont:eq(0)').addClass('nopac');
        $('.txtP').html('<p>Contact us</p>') //Текст динамической кнопки, если план слишком дорогой
        }else{
        $('.txtP').html('<p>Get started free</p>') //Текст динамической кнопки
        };

        if (num>20&&num<=44){$('.colont').removeClass('nopac');$('.colont:eq(1)').addClass('nopac');};
        if (num>44&&num<=70){$('.colont').removeClass('nopac');$('.colont:eq(2)').addClass('nopac');};
        if (num>70){$('.colont').removeClass('nopac');$('.colont:eq(3)').addClass('nopac');};

};col();
    
    if (num<=20){   //свое значение ползунка range slider до которого будет действовать 1 план
        boxes.html(100);
        $('.monthY').html('€50 / mo'); //меняем цену за год на свою при 1 плане
        $('.monthM').html('€60 / mo'); //меняем цену за месяц на свою при 1 плане
        $('.yearY').html('');
        $('.yearM').html('');
    };
    //Малый
    if (num>20 && num<=40){  //свое значение ползунка range slider от и до которого будет действовать 2 план. И так далее.
        boxes.html('1 000');
        $('.monthY').html('€150 / mo'); //меняем цену за год на свою при 2 плане
        $('.monthM').html('€180 / mo'); //меняем цену за месяц на свою при 2 плане. И так далее
        $('.yearY').html('');
        $('.yearM').html('');
    };
    if (num>40 && num<=60){
        boxes.html('2 000');
        $('.monthY').html('€250 / mo');
        $('.monthM').html('€310 / mo');
        $('.yearY').html('');
        $('.yearM').html('');
    }; 
    if (num>60 && num<=80){
        boxes.html('4 000');
        $('.monthY').html('€450 / mo');
        $('.monthM').html('€550 / mo');
        $('.yearY').html('');
        $('.yearM').html('');
    };
    if (num>80){   // Если надо больше позиций изменения цены - напиши мне в ТГ @breeze_tilda
        boxes.html('7 000');
        $('.monthY').html('—');
        $('.monthM').html('—');
        $('.yearY').html('—');
        $('.yearM').html('—');
    };
};
$(".tn-atom__form").on('DOMSubtreeModified', ".t-calc", function() {
explode();  
});

setTimeout(explode, 2500);

$( window ).resize(function() {
    setTimeout(explode, 3000);
});
});
</script>
Полезные заметки:

Вы также можете добавить Текст:
  • Итоговая цена за год (e.g: €1000) - ссылка #yearcur
  • Итоговая цена за год old (e.g: €1250) со ссылкой #yearold
  • Для произвольной цифры (e.g: 100) - ссылка #boxes
  • Для доп. описания, если преимущества подписки меняются в зависимости от плана - ссылка #txtP
Здесь в коде ты можешь поменять порядок поведения кнопок "Год" / "Месяц "$('.type:last').addClass('acttype'); // замени last на first, если надо, чтобы изначально показывалась цена за месяц, а не за год.
Больше кода для Tilda в ТГ-канале
Поблагодари за код - подпишись https://t.me/breeze_tilda