基本的に、2つの異なるページレイアウトヘッダーをA/Bテストします。いくつかの構造上の違いがあります(CSSを切り替えるだけではありません)。
私はこれだけの作業を行うことができました。ZendFramework(サーバー側のPHP)は、特定のブール変数を探して、レイアウトとして使用するHTMLファイル(元のファイルまたはバリエーション)を決定します。このバイナリスイッチは美しく機能します。それぞれの異なるレイアウトはうまくロードすることができます。
GWO utmx( "combination")関数から0または1を取得できませんでした。
ページの読み込み中に、その機能の結果が利用可能になるのはいつですか?私にとっては、いつ呼び出すかに関係なく、常に0を返すように見えます。または、__ utmx Cookieはいつ設定されますか?それが設定された後、私は単にページを更新することができました。utmx()関数のコールバックはありますか?
私は複数の戦略を試しましたが、私の最新の計画はこれでした:
PHPコードでは、__ utmx cookieをチェックして、割り当てられたバリエーション番号を取得します。それをカスタムCookieに保存します。その数に基づいて、レンダリングするレイアウトを決定します。次に、JavaScriptで、ページの読み込み後、カスタムCookieの存在を確認し、存在しない場合は、ページをすぐに更新します(サーバー側のコードに上記のように__utmx cookieを確認するように求めます)。そうすれば、ユーザーが2回目にアクセスしたときに、カスタムCookieがすでに存在し(バリエーションの値を含む)、使用するレイアウトをサーバー側のコードに伝えることができます。ユーザーの最初の訪問時に、GWOがバリエーションに0または1を割り当てた直後に、JavaScriptを使用してページを更新し、サーバー側のコードが__utmxCookieを読み取れるようにします。
__utmx cookieがいつ/どのように設定されるか(またはutmx( "combination")がいつ機能するか)はわかりません。
GoogleWebオプティマイザーを使用したA/Bテスト。訪問者がAまたはBを取得したことをCookieが教えてくれることは役に立ちませんでした。
サーバー側のコード:
$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.