# Лендинг: локальный

Локальные лендинги хранятся в Keitaro, что делает их быстрыми и без лишних редиректов.

# Требования к лендингам

HTML:

  1. Главная страница должна быть с именем index.html.
  2. Не должен использоваться <base> тег. Keitaro добавляет свой тег <base>, что может привести к поломке лендинга.
  3. Не должно стоять внутренних редиректов и рефреша.

PHP:

  1. Главная страница должна быть с именем index.php.
  2. Запрещены функции exec(), system(), job_start(), eval().
  3. Загрузка дополнительных скриптов в include() и require() должно указывать полный путь до файла (например, с dirname(__FILE__)). Пример:
  • require_once dirname(__FILE__) . '/src/lib.php'; - правильно.
  • require_once 'src/lib.php'; - неправильно.
  1. Время выполнения не должно превышать 3 секунд. На всех curl вызовах настройте таймауты:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); 
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
1
2

# Создание ZIP архива

Подготовьте у себя на компьютере папку с файлами лендинга.

  • (Windows) Нажмите правую кнопку мыши на папке лендинга и выберите "Compress to ZIP file".
  • (macOS) Нажмите правую кнопку мыши на папке лендинга и выберите "Compress".

# Загрузка ZIP файла

Заполните поле Название. Нажмите на кнопку Выбрать файл или перетащите zip-файл:

Нажмите Создать.

# Создание ссылки на оффер

  1. Откройте редактор.

  2. Установите JS адаптер на всех страницах лендинга, включая ту где будет стоять ссылка на оффер.

  3. Настройте ссылку оффера используя /?_lp=1 в качестве href.

Пример:

<a href="/?_lp=1">Offer</a>
1

Пример с несколькими офферами:

<a href="/?_lp=1&offer_id=10">Offer ID 10</a>
<a href="/?_lp=1&offer_id=22">Offer ID 22</a>
1
2
Альтернативное решение

Используйте макрос {offer}:

<a href="{offer}">Offer</a>
1

Чтобы отправить на определенный оффер из потока, добавьте &offer_id=ID. Пример:

<a href="{offer}&offer_id=100">Offer 1</a>
<a href="{offer}&offer_id=200">Offer 2</a>
1
2

# Отправка postback

  1. Откройте редактор.

  2. Установите JS адаптер на всех страницах лендинга.

  3. Отправляйте Postback.

Альтернативное решение
  1. Найдите форму.
  2. Добавьте в нее <input type="hidden" name="_subid" value="{subid}" />.

Пример:

<form action="submit.php" method="post">
    
    <input type="hidden" name="_subid" value="{subid}" />
    
    <input type="text" class="form__input" name="name" placeholder="Your Name">
    <input type="tel" class="form__input" name="phone" placeholder="Phone Number">
    <button class="btn form__btn" type="submit">Submit</button>  
</form>
1
2
3
4
5
6
7
8
  1. Найдите страницу, которая отправляет данные с формы.
  2. Используйте $_POST['_subid'], чтобы получить subid.

Пример 1:

file_get_contents('POSTBACK_URL?status=lead&subid=' . urlencode($_POST['_subid']));
1

Пример 2:

$data = array(
  'sub1' => $_POST['_subid'], // <---- that parameter is added
  'name' => $_POST['name],
  ...
);
1
2
3
4
5

# Защита от прямых посещений

  1. Откройте редактор
  2. Откройте index.php (переименуйте index.html в index.php если нужно)
  3. Вставьте:
<?php
if (!isset($rawClick)) {
  die();
}
?>
1
2
3
4
5
Как защитить кампанию от прямых посещений?

  1. Добавьте в поток фильтр Параметр
  2. Впишите имя external_id, значение @empty и режим НЕТ.

# FAQ

worker error EOF

Возможные причины:

  1. В коде лендинга есть редирект.
  2. Код лендинга содержит критические ошибки (FATAL errors). Смотрите системный лог.
Почему при выполнении локального лендинга выводится 'Timed out'?

Это сообщение выводится при превышении локальным лендингом времени выполнения.

Время выполнения задано в настройке: "Таймаут на запуск локальных лендингов и офферов". Найти ее можно в меню Обслуживание → Настройки → Основные. Максимальное значение настройки - 9 секунд.

Почему не работают картинки?

Пути должны быть относительными (не начинаться с /). Примеры:

  • <img src="/home.png" /> - неправильно.
  • <img src="/img/home.png" /> - не правильно.
  • <img src="home.png" /> - правильно.
  • <img src="img/home.png" /> - правильно.
Почему сразу перенаправляет на /lander/name/index.html?

Это значит, что в HTML или JS коде лендинга имеется редирект. Его нужно найти и удалить.

Почему popup форма не работает?

Вероятно скрипт использует href атрибут. Например, <a class="slow-scroll" href="#form2">order</a>. Keitaro вынужден модифицировать код лендинга, поэтому все скрипты, что ориентируются на href работать не будут. Решением остается только использование лендинга на внешнем хостинге.

Не работают JS скрипты?

Посмотрите консоль браузера Developer Tools на наличие ошибок.

Как передать параметры с источника через лендинг?

Смотрите страницу Передача параметров с источника трафика.

Как подключить Facebook Pixel?

Читайте страницу FB Pixel.

Как подключить TikTok Pixel?

Читайте страницу TikTok Pixel .

Как записать параметры клика в PHP?

В PHP коде доступен глобальное $rawClick:

$rawClick->get('parameter');
1
Почему не работает плавный скролл?

Ищем в лендинге JS код, функцию или отдельный метод, в котором используется $('html, body').animate({…}).

Метод .ANIMATE. это встроенный метод для библиотеки jQuery, который выполняет анимацию.

Он используется в методе селектор.Click() или селектор.on('touch, click). Выглядит так:

селектор.click(function() { $('html, body').animate(positionSelector , timeAnimate); })

Найдите указанный селектор. Это обычно ссылка с классом. Класс указан как этот селектор. Например: <a class="to_form" href="#">ссылка</a>

Нам надо аккуратно изменить все ссылки, если анимация скролла не работает.

Оборачиваем ссылку в теге span, указываем тегу класс, который был у ссылки. У ссылки убираем все аттрибуты (класс и href).

Получаем в итоге: <span class="to_form"><a>ссылка</a></span>

Проверяем.

Как показать время в другой временной зоне?
echo (new DateTime(null, new DateTimeZone("Europe/Moscow")))->format("Y-m-d H:i");
1