Skip to content

Instantly share code, notes, and snippets.

@koddr
Last active April 25, 2024 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save koddr/efba3d88019ed090f21d9e430472feb5 to your computer and use it in GitHub Desktop.
Save koddr/efba3d88019ed090f21d9e430472feb5 to your computer and use it in GitHub Desktop.
Буткемпы 2.0: скрипты для страниц Tilda

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

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

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

<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 метками
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) {
if (input.type === 'radio') {
// если это radio-кнопка, то забираем только отмеченное значение
if (input.checked) obj[input.name] = input.value;
} else {
obj[input.name] = input.value;
}
});
// формируем новую куку с данными из формы
document.cookie = `bootcamp_form_aggregated_data=email=${obj['email']}|||phone=${obj['phone'].replaceAll(/\s|\(|\)|\-/gi, '')}; path=/; secure;`;
// переадресация на страницу успеха
var successUrl = form.getAttribute('data-success-url');
if (successUrl) window.location.href = successUrl;
}
</script>
<script>
// массив, в котором айдишники всех кнопок
var BUTTON_CLASS = 'uid';
// массив, в котором лежат нужные нам названия UTM
var UTMS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
// массив, в котором лежат нужные названия полей из формы
var FIELDS = ['email', 'phone'];
// функция, которая вытаскивает значение cookie с указанным названием
function findCookieByName(cookie, name) {
var result = null, tmp = [];
var match = document.cookie.match(new RegExp(`(^| )${cookie}=([^;]+)`));
if (match) {
match[2].split('|||').forEach(function (item) {
tmp = item.split('=');
if (tmp[0] === name) result = decodeURIComponent(tmp[1]);
});
}
return result;
}
// создаем пустую строку
var utmParams = '';
// бежим по массиву с UTM метками, пытаемся вытащить данные
// и положить в переменную, которую затем будем использовать
for (u of UTMS) {
utmParams += `&${u}=${findCookieByName('bootcamp_utm_aggregated_data', u)}`;
}
// бежим по массиву с полями из формы, пытаемся вытащить данные
// и положить в переменную, которую затем будем использовать
for (f of FIELDS) {
utmParams += `&${f}=${findCookieByName('bootcamp_form_aggregated_data', f)}`;
}
// очистка ссылки под кнопкой
var buttons = document.querySelectorAll(`.${BUTTON_CLASS} a`);
// формируем новый URL у всех кнопок с необходимыми UTM метками
for (b of buttons) {
var baseUrl = b.href.replaceAll('&amp;', '&');
b.href = `${baseUrl}${utmParams}`;
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment