Skip to content
Getcourse API
Menu
  • Главная
  • Продукты
    • TCD
    • Информатор
    • Помощник Геткурс
  • Услуги
    • GetCourse
    • Вебинары
    • SaleBot и создание чат-ботов
    • Инфраструктурные решения
    • Аудио/видео продакшн
  • Обо мне
Menu

Промокоды. Тильда. Код.

Posted on 19.07.202219.07.2022 by backtrack

И вот еще одна из интересных и неожиданных задач с которой пришлось столкнутся.
Существует сайт на Тильда. На странице есть корзина. И форма оплаты с промокодом.

Ничего не предвещало, как говорится. Но вот один из промокодов дает 100% скидку на продукт. Но как оказалось, Тильда не совсем корректно ведет себя в таких случаях и после применения промокода с 100% скидкой продолжает перенаправлять клиента на форму оплаты с суммой 0.

Соответственно нужно было что-то придумать. Если применяется промокод и сумма платежа равна нулю, нужно сразу перенаправить пользователя на страницу благодарности. Если промокод не дает 100% скидки или пользователь и вовсе без промокода покупает, то необходимо перенаправить клиента на страницу с оплатой.

Реализация в лоб

Первое, что пришло в голову, это использовать отдельную кнопку для клиентов с промокодом. Однако глобально на погоду это не влияет, нужно все равно писать код. И все равно заказ который оформляется через корзину будет перенаправляется на страницу оплаты даже с суммой 0. Точно так же нет смысла создавать дубликаты страниц, так как в конечном итоге логика останется прежней.

Вмешиваемся в работу корзины Тильда

Новая идея заключалась в том, что бы попробовать вмешаться в работу корзины. Да и терять по сути было нечего, понятно, что данные условно бесплатных заказов и так и так теряются и не доходят до Тильды, а это с одной стороны развязывает руки в плане разнопланового вмешательства в корзину, с другой стороны было необходимо реализовывать какое-то внешнее хранилище данных с этой формы. В качестве внешнего хранилища был выбран GetCourse, не по тому, что это единственное возможное хранилище, а просто по тому, что у заказчика он был. Если возможности сохранять данные на GetCourse нет, то абсолютно не проблема организовать такое хранилище на базе Google Sheets и управлять всем с использованием Google Apps Script.

Первым делом было необходимо понять, как работать с промокодом. Для этого изначально я решил исследовать страницу Тильды на предмет чего-то связанного с промокодом, но внезапно наткнулся на некий обобщенный вывод информации о сумме покупки после применения промокода. Этот блок не появляется, если промокод не применен, но активен после активации промокода.

На текущем этапе задача свелась к поиску спана с классом t706__cartwin-totalamount, если этот класс появлялся в HTML-структуре страницы далее необходимо было отследить значение указанное в этом спане. Когда и если это значение становилось равно нулю можно выполнять дополнительные функции. В случае, если пользователь промокод не применял, то скрипт соответственно никак не реагирует, позволяя Тильде перенаправит пользователя на страницу оплаты. Но если значение становится равным нулю, скрипт собирает сведения о UTM-метках, считывает значение пользовательских полей (имя, почта, номер тлф) и отправляет эту информацию другому скрипту, который передает полученную информацию в внешнее хранилище.

Остается только каким-то образом заблокировать конструктору Тильда перенаправить пользователя на страницу оплаты. Так как независимо от наличия промокода или суммы оплаты потенциальный клиент в любом из возможных сценариев будет вынужден нажать на кнопку «Оформить заказ», то следственно можно было бы попробовать переназначить обработчик нажатия кнопки. Вместо штатного события onSubmit которое срабатывает при нажатии на кнопку и передает данные формы в Tilda и перенаправляет пользователя на страницу оплаты, я решил использовать событие onClick со своим обработчиком. Этот обработчик при срабатывание собирает и передает данные, а так же делает перенаправление пользователя сразу на страницу благодарности.

Переключатель обработчика
JavaScript
1
2
3
4
5
if (document.getElementsByClassName('t706__cartwin-totalamount')[0].innerText === '0') {
document.getElementsByClassName('t-form__submit')[0].addEventListener('click', function () {
fetch(completteURL());
window.location.href = "https://domain.tld/thanks";
      });

В строках кода выше и заключена вся хитрость. Просто в интервальном обработчике происходит проверка поля спана t706__cartwin-totalamount на равенство нулю, и если это так, то используя функцию addEventListener переназначим обработчик клика по кнопке. И здесь внутри уже нового обработчика вызываем функцию fetch в которой вызывается функция completteURL() которая собирает UTM-метки и пользовательские данные. Затем все эти данные передаются на внешнее хранилище.

Это и всё?

Основной целью статьи было описание одного из возможных методов, как можно вмешаться в работу Tilda и реализовать свою механику работы с заказом и промокодом. О внешних хранилищах, API GetCourse и прочем мы поговорим в будущих статьях.

А пока можно посмотреть, что вообще из этого получилось.

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Рубрики

  • Yandex DataLens
  • Дайджест новостей
  • Для начинающих
  • Курилка техспеца
  • По фану
  • Разработка

Мы используем куки для наилучшего представления нашего сайта.

Если Вы продолжите использовать сайт, мы будем считать что Вас это устраивает.

Вы можете узнать больше о том, какие файлы cookie мы используем, или отключить их в настройках.

Getcourse API
Powered by  GDPR Cookie Compliance
Политика конфеденциальности

Этот веб-сайт использует файлы cookie, чтобы мы могли предоставить вам наилучший пользовательский опыт. Информация о файлах cookie хранится в вашем браузере и выполняет такие функции, как распознавание вас, когда вы возвращаетесь на наш веб-сайт, и помогает нашей команде в понимании того, какие разделы веб-сайта вы считаете наиболее интересными и полезными.

Строго необходимые файлы cookie

Строго необходимые файлы cookie должны быть включены постоянно, чтобы мы могли сохранить ваши предпочтения для настроек файлов cookie.

Если вы отключите этот файл cookie, мы не сможем сохранить ваши настройки. Это означает, что каждый раз, когда вы посещаете этот веб-сайт, вам нужно будет снова включать или отключать файлы cookie.