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

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

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

HTML:

  1. Главная страница обязательно называется index.html.
  2. Отсутствие тега <base> в коде index файла обязательно. 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 файла

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

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

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

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

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

  3. В потоке кампании выберите схему Лендинги и офферы, добавьте созданные лендинг и оффер в один поток.

  4. Настройте ссылку оффера, используя /?_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) && !isset($click)) {
  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 коде лендинга имеется редирект на страницу index.html. Необходимо найти и удалить.

Почему 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