По сути, мы хотим провести A/B-тестирование двух разных заголовков макета страницы. Есть некоторые структурные различия (это не просто переключение CSS).
У меня получилось так много работать: наш Zend Framework (серверный PHP) ищет определенную логическую переменную, чтобы решить, какой HTML-файл использовать в качестве макета (оригинал или вариант). Этот двоичный переключатель прекрасно работает. Каждый другой макет может хорошо загружаться.
Я просто не смог получить 0 или 1 из вашей функции GWO utmx("combination").
Когда во время загрузки страницы доступен результат этой функции? Для меня кажется, что он всегда возвращает 0 независимо от того, когда я его вызываю. Или когда устанавливается файл cookie __utmx? Я мог бы просто обновить страницу после того, как это установлено. Есть ли обратный вызов для функции utmx()?
Я пробовал несколько стратегий, но мой последний план был таким:
В коде PHP проверьте файл cookie __utmx, чтобы получить назначенный номер варианта. Сохраните это в пользовательский файл cookie. Решите, какой макет отображать на основе этого числа. Затем в javascript после загрузки страницы он просто проверяет наличие пользовательского файла cookie, и если он отсутствует, он просто немедленно обновляет страницу (предлагая коду на стороне сервера просмотреть файл cookie __utmx, как описано выше). Таким образом, при втором посещении пользователя мой пользовательский файл cookie уже существует (содержащий значение варианта) и может сообщить коду на стороне сервера, какой макет использовать. При первом посещении пользователя, сразу после того, как GWO присвоит варианту 0 или 1, я бы использовал javascript для обновления страницы, чтобы мой код на стороне сервера мог прочитать файл cookie __utmx.
Я не понял, когда/как устанавливается файл cookie __utmx (или когда будет работать utmx("combination")).
A/ B-тест с Google Web Optimizer; какой файл cookie сообщает мне, что посетитель получил A или B, не помог.
Код на стороне сервера:
$cookieNameForThisExperiment = 'gwo_variation_header-and-navbar'; //This is for Google Website Optimizer split testing of the header-and-navbar
$variation1 = 'variation1';
if (!isset($_COOKIE[$cookieNameForThisExperiment]) && isset($_COOKIE["__utmx"])) {
$utmx = explode(':', $_COOKIE["__utmx"]);
$variation = $utmx[2]; //Careful: this will not work if there are multiple Google experiments running simultaneously and might not even work for testing more than "original" vs 1 "variation". http://productforums.google.com/forum/#!category-topic/websiteoptimizer/technical-questions/kilJ7lJU2NY
$variationName = 'original';
if ($variation == 1) {
$variationName = $variation1;
}
Extrabux_Cookie::setCookie($cookieNameForThisExperiment, $variationName, time() + (60 * 60 * 24 * 30));
}
if (isset($_COOKIE[$cookieNameForThisExperiment]) && $_COOKIE[$cookieNameForThisExperiment] == $variation1) {
$this->_helper->layout()->setLayout('main_new'); //Use new layout only in this variation.
} //Otherwise, continue using the original layout.