# Лендинг: локальный
Локальные лендинги хранятся в Keitaro, загружаются быстрее за счет отсутствия редиректов.
# Требования к лендингам
HTML:
- Главная страница обязательно называется
index.html
. - Отсутствие тега
<base>
в коде index файла обязательно. Keitaro автоматически добавляет тег<base>
для формирования путей. - Отсутствие внутренних редиректов и рефреша.
PHP:
- Главная страница обязательно называется
index.php
. - Запрещены функции
exec(), system(), job_start(), eval()
. - При загрузке дополнительных скриптов в
include()
иrequire()
используется полный путь до файла (например, сdirname(__FILE__)
).
Пример:
require_once dirname(__FILE__) . '/src/lib.php';
- правильно.require_once 'src/lib.php';
- неправильно.
- Время выполнения не превышает 3 секунды. На всех curl вызовах настройте таймауты:
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
2
# Создание ZIP архива
Подготовьте папку с файлами лендинга.
- (Windows) Нажмите правую кнопку мыши на папке лендинга и выберите "Compress to ZIP file".
- (macOS) Нажмите правую кнопку мыши на папке лендинга и выберите "Compress".
# Загрузка ZIP файла
Заполните поле Название. Нажмите на кнопку Choose file или перетащите zip-файл:
Нажмите Создать.
# Создание ссылки на оффер
Откройте редактор.
Установите JS адаптер на всех страницах лендинга, включая ту, где указана ссылка на оффер.
В потоке кампании выберите схему Лендинги и офферы, добавьте созданные лендинг и оффер в один поток.
Настройте ссылку оффера, используя
/?_lp=1
в качествеhref
.
Пример:
<a href="/?_lp=1">Offer</a>
Пример с несколькими офферами:
<a href="/?_lp=1&offer_id=10">Offer ID 10</a>
<a href="/?_lp=1&offer_id=22">Offer ID 22</a>
2
Альтернативное решение
Используйте макрос {offer}
:
<a href="{offer}">Offer</a>
Чтобы отправить на определенный оффер из потока, добавьте &offer_id=ID
. Пример:
<a href="{offer}&offer_id=100">Offer 1</a>
<a href="{offer}&offer_id=200">Offer 2</a>
2
# Отправка postback
Откройте редактор.
Установите JS адаптер на всех страницах лендинга.
Отправляйте Postback.
Альтернативное решение
- Найдите форму.
- Добавьте в код формы
<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>
2
3
4
5
6
7
8
- Найдите страницу, которая отправляет данные с формы.
- Используйте
$_POST['_subid']
для получения subid.
Пример 1:
file_get_contents('POSTBACK_URL?status=lead&subid=' . urlencode($_POST['_subid']));
Пример 2:
$data = array(
'sub1' => $_POST['_subid'], // <---- that parameter is added
'name' => $_POST['name],
...
);
2
3
4
5
# Защита от прямых посещений
- Откройте редактор.
- Откройте
index.php
(переименуйтеindex.html
вindex.php
если необходимо) - Вставьте:
<?php
if (!isset($rawClick) && !isset($click)) {
die();
}
?>
2
3
4
5
Как защитить кампанию от прямых посещений?
Перенести в кампании:
- Добавьте в поток фильтр
Параметр
- Впишите имя
external_id
, значение@empty
и режимНЕТ
.
# FAQ
worker error EOF
Возможные причины:
- В коде лендинга присутствует редирект.
- Код лендинга содержит критические ошибки (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');
Почему не работает плавный скролл?
Ищем в лендинге 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");