基本上,我们想要 A/B 测试 2 个不同的页面布局标题。存在一些结构差异(不仅仅是切换 CSS)。
我已经能够得到这么多的工作:我们的 Zend 框架(服务器端 PHP)查找某个布尔变量来决定使用哪个 HTML 文件作为布局(原始文件或变体)。这个二进制开关工作得很好。每个不同的布局都能够很好地加载。
我只是无法从您的 GWO utmx("combination") 函数中获取 0 或 1。
在页面加载期间,该功能的结果何时可用?对我来说,无论我何时调用它,它似乎总是返回 0。或者,何时设置 __utmx cookie?设置后我可以简单地刷新页面。utmx() 函数有回调吗?
我尝试了多种策略,但我最近的计划是这样的:
在 PHP 代码中,检查 __utmx cookie 以获取分配的变体编号。将其保存到自定义 cookie。根据该数字决定要渲染的布局。然后,在 javascript 中,页面加载后,它只是检查自定义 cookie 是否存在,如果不存在,它会立即刷新页面(提示服务器端代码查看 __utmx cookie,如上所述)。这样,在用户第二次访问时,我的自定义 cookie 已经存在(包含变体的值),并且可以告诉服务器端代码使用哪种布局。在用户第一次访问时,在 GWO 为变体分配 0 或 1 之后,我会使用 javascript 刷新页面,以便我的服务器端代码可以读取 __utmx cookie。
我还没有弄清楚 __utmx cookie 何时/如何设置(或 utmx("combination") 何时起作用)。
使用 Google Web 优化器进行 A/B 测试;什么 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.