Генерация лендинга. Мой подход к MVT-тестированию

Как-то раз, в процессе создания новых лендов из существующих, я менял заголовки, правил тексты, пробовал разные надписи на кнопках и заметил, что изменения на лендах обычно не значительны, но при этом приходится создавать новые папки и файлы. Через месяц активной работы часто скапливается большие количество всевозможных вариаций лендов с именами типа: var2-iter1-2, white3-iter2-3, scanner4-button5-text1 и т. д. Кроме того, лендинги часто требуется переводить, и сделать это очень проблематично, когда они находятся в неупорядоченном виде. Тексты приходится копировать с каждого лендинга отдельно, искать его либо в коде, либо открывать каждый в браузере и копировать оттуда.

Я решил этот процесс оптимизировать: как создание лендингов, так хранение и перевод. Написал для себя небольшой скрипт index.php (написан для трекера imobitrax. В Voluume не нужен include lp_track.php, по другому передаются параметры устройства. Переделать под него несложно.) Некоторую версию предоставлю вам, друзья, для примера.

<?php 
// Параметры запуска
// h=1,2,3..
// txt=1,2,3..
// btxt=1,2,3..
// tmp=1,2,3..
// lg=EN,ES,HU..
//
// Ex. http://domain.com/index.php?h=1&txt=5&btxt=1&tmp=2&lg=EN

include('/var/www/s.../lp_track.php');  // Инклуд как в ленде на imobitrax, для voluume не нужен.

ini_set('display_errors','On');
error_reporting('E_ALL');
define("S", dirname(__FILE__)."/");
define("URL", 'http://domain.com/M/');

// SET Device
$phone = $device_mf.' '.$device_name; 
if ((strpos($phone,'Generic Feature Phone')>0)
OR(strpos($phone,'UNKNOWN')>0)
OR($phone=='Web Browser Web Browser'))
 {$phone = 'phone';}

// Include Text Database
// SET PARAMETERS
if (empty($_GET['lg'])) $lg='en'; else $lg = $_GET['lg']; // language
if (empty($_GET['tmp'])) $tmp='1'; else $tmp = $_GET['tmp']; // template
if (empty($_GET['h'])) $h='1'; else $h = $_GET['h']; // header
if (empty($_GET['txt'])) $text='1'; else $text = $_GET['txt']; // text
if (empty($_GET['btxt'])) $btext='1'; else $btext = $_GET['btxt']; // text

include(S.'/data/'.$lg.'.php');

$h=$h_[$h];
$text=$txt_[$text];
$btext=$btxt_[$btext];

// GENERATE HTML
$template=file_get_contents(S."templates/".$tmp."/index.html");
$template=str_replace("{tmp_dir}", URL.'templates/'.$tmp, $template);
$template=str_replace("{offer}", $offer, $template);
$template=str_replace("{h1}", $h, $template);
$template=str_replace("{text}", $text, $template);
$template=str_replace("{btext}", $btext, $template);

echo $template;
?>

Что делает этот скрипт?

Это корневой, главный файл лендинга. PHP генерирует его код, как любая CMS генерирует код сайта. Это, по сути, и есть мини-CMS.
Скрипт собирает лендинг, исходя из переданных ему параметров.

Например:

http://domain.com/index.php?h=1&txt=5&btxt=1&tmp=2&lg=EN

Параметр h=1 – говорит скрипту, чтобы брал из базы заголовок 1.
txt=5 – взять текст 5
btxt=1 – взять текст кнопки 1
tmp=2 – использовать шаблон лендинга 2
lg=EN – тексты на английском

Откуда скрипт берет информацию?

Я не стал усложнять скрипт и лишний раз нагружать сервер, поэтому вся база данных представляет из себя один файл для каждого языка.
В папке data (исходники в конце статьи), есть несколько файлов en.php es.php … В каждом хранится информация на соответствующем языке.

<?php
$h_ = array(    
    '1' => '¡Tu teléfono tiene virus!',
    '2' => 'VIRUS ALERT!',
    '3' => 'VIRUS WARNING!'
);
    
$txt_ = array(    
 '1' => 'text1',
 '1' => 'text2',
 '1' => 'text3',
 '1' => 'text4',
 '1' => 'text5',
 '1' => 'text6'
);
    
$btxt_ = array(    
    '1' => "Eliminar el virus ahora",
    '2' => "Eliminar el virus",
    '3' => "CONTINUE"
);        
?>

К слову, сюда можно записывать абсолютно любые параметры, которые вы хотите использовать на лендинге: цвет фона, цвет текста и т. д, – но усложнять тоже не советую.

В папке templates содержатся шаблоны лендингов. Каждый шаблон в своей папке, с картинками.
В шаблонах используются следующие макросы:
{h1} – место для заголовка
{text} – место для текста
{btext} – место для текста кнопки

Скрипт берет нужный шаблон (по номеру в параметре запуска) и заменяет макросы на тексты со соответствующими номерами из базы данных нужного языка.

Применение

Мы собрали хорошую базу из текстов, сделали парочку шаблонов и решили сделать MVT-тестирование на какой-то оборотистой кампании. Наши действия.
Допустим, мы захотели протестировать 5 заголовков при одинаковых остальных параметрах.

В итоге у нас получаются такие ссылки на лендинги:
http://domain.com/index.php?h=1&txt=5&btxt=1&tmp=2&lg=EN
http://domain.com/index.php?h=2&txt=5&btxt=1&tmp=2&lg=EN
http://domain.com/index.php?h=3&txt=5&btxt=1&tmp=2&lg=EN
http://domain.com/index.php?h=4&txt=5&btxt=1&tmp=2&lg=EN
http://domain.com/index.php?h=5&txt=5&btxt=1&tmp=2&lg=EN

Вместо копирования лендингов и изменения их текста, мы за несколько секунд скопировали ссылку, изменили соответствующий параметр.
Вы можете собирать свои наборы из параметров и тестировать согласно вашей схеме.
Например, сначала шаблоны, потом тексты (подходы), заголовки к ним, затем текст кнопки, цвет кнопки, за этим цвет фона. Когда это все есть в базе, эти манипуляции займут немного времени, даже если у вас десяток кампаний.

P.S. Пост – это прежде всего концепция, технический метод и подход. Осенью я выпущу свой трекер, который будет обладать полным встроенным функционалом для хранения базы данных различных частей лендингов, их генерации по описанному алгоритму, с хорошим набором шаблонов для разных вертикалей, с возможностью их редактирования и добавления своих и многим другим.

Всем спасибо за внимание

https://www.sendspace.com/file/f2cae4 – Исходники

Комменты