Skip to content

Instantly share code, notes, and snippets.

@koddr
Last active February 19, 2025 08:08
Show Gist options
  • Select an option

  • Save koddr/efba3d88019ed090f21d9e430472feb5 to your computer and use it in GitHub Desktop.

Select an option

Save koddr/efba3d88019ed090f21d9e430472feb5 to your computer and use it in GitHub Desktop.
Буткемпы: скрипты для страниц Tilda

Для запуска лэнда для буткемпа

  1. Зайти на аккаунт тильды (it@...);
  2. Найти папку с лэндами буткемпов;
  3. Найти нужный лэндинг (там их будет два: один для главной страницы, другой для "спасибо-страницы");

Снимок экрана

  1. Разместить содержимое 2_главная_страница.html на главной странице (в самом низу страницы);
  2. Разместить содержимое 3_спасибо_страница.html на странице "спасибо" (в самом низу страницы);

Снимок экрана 2023-09-03 в 12 01 38

Снимок экрана 2023-09-03 в 12 00 31

❗️ Внимание! Перед размещением скриптов – необходимо проверить, нет ли уже схожего скрипта на странице. Если есть, то заменить старый скрипт на новый.

<script>
// массив, в котором лежат нужные нам названия UTM
var UTMS = ["utm_source", "utm_medium", "utm_campaign", "utm_content", "utm_term"];
// функция, которая вытаскивает все GET-параметры из адресной строки
function findGETParameterByName(name) {
var result = null, tmp = [];
location.search.substr(1).split("&").forEach(function (item) {
tmp = item.split("=");
if (tmp[0] === name) result = decodeURIComponent(tmp[1]);
});
return result;
}
// бежим по массиву с аттрибутами и пытаемся вытащить данные
// и положить в переменную, которую затем будем использовать
var utmParams = "";
for (u of UTMS) {
utmParams += `${u}=${findGETParameterByName(u)}`;
if (u !== 'utm_term') utmParams += '|||';
}
// формируем новую куку с необходимыми UTM метками + sub5
document.cookie = `bootcamp_utm_aggregated_data=${utmParams}; path=/; secure;`;
// callback-функция для прокидывания данных
// из формы в куки пользователя
function t396_onSuccess(form) {
// проверка на существование формы
if (!form) return;
if (form instanceof jQuery) form = form.get(0);
// обработка всех полей формы в Zero блоке
var obj = {}, inputs = form.elements;
Array.prototype.forEach.call(inputs, function (input) {
obj[input.name] = input.value;
});
// формируем новую куку с данными из формы
document.cookie = `bootcamp_form_aggregated_data=${obj['email'].replace('@', '|||')}; path=/; secure;`;
// переадресация на страницу успеха
var successUrl = form.getAttribute('data-success-url');
if (successUrl) window.location.href = successUrl;
}
</script>
<script>
// массив, в котором айдишники всех кнопок
var BUTTON_CLASSES = ["uid"];
// массив, в котором лежат нужные нам названия UTM
var UTMS = ["utm_source", "utm_medium", "utm_campaign", "utm_content", "utm_term"];
// функция, которая вытаскивает значение cookie с названием utm_aggregated_data
function findCookieByName(name) {
var result = null, tmp = [];
var match = document.cookie.match(new RegExp('(^| )bootcamp_utm_aggregated_data=([^;]+)'));
if (match) {
match[2].split("|||").forEach(function (item) {
tmp = item.split("=");
if (tmp[0] === name) result = decodeURIComponent(tmp[1]);
});
}
return result;
}
// функция, которая вытаскивает все GET-параметры из адресной строки
function findGETParameterByName(name) {
var result = null, tmp = [];
location.search.substr(1).split("&").forEach(function (item) {
tmp = item.split("=");
if (tmp[0] === name) result = decodeURIComponent(tmp[1]);
});
return result;
}
// бежим по массиву с аттрибутами и пытаемся вытащить данные
// и положить в переменную, которую затем будем использовать
var utmParams = "";
for (u of UTMS) {
if (findCookieByName(u) === null) {
utmParams += `&${u}=${findGETParameterByName(u)}`;
} else {
utmParams += `&${u}=${findCookieByName(u)}`;
}
}
// берем из кук данные отправленной формы из шага 1
// делаем обратное преобразования символов '|||' в '@'
var cookieFormData = document.cookie.match(new RegExp('(^| )bootcamp_form_aggregated_data=([^;]+)'));
if (cookieFormData) utmParams += `&email=${cookieFormData[2].replace('|||', '@')}`;
// берем классы кнопок, формируем новые ссылки с необходимыми UTM метками
var baseUrl = "";
for (bc of BUTTON_CLASSES) {
baseUrl = document.getElementsByClassName(bc)[0].getElementsByTagName("a")[0].href;
document.getElementsByClassName(bc)[0].getElementsByTagName("a")[0].href = `${baseUrl}${utmParams}`;
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment