Как-то раз, в процессе создания новых лендов из существующих, я менял заголовки, правил тексты, пробовал разные надписи на кнопках и заметил, что изменения на лендах обычно не значительны, но при этом приходится создавать новые папки и файлы. Через месяц активной работы часто скапливается большие количество всевозможных вариаций лендов с именами типа: 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 – Исходники