コンテンツの読み込みに時間がかかっています

a-blog cms で A/B テストできる環境を考えてみる その1

7/13 に GA タグを消してしまって情報が取れてない残念なキャプチャ


a-blog cms には Cookie の値を利用してテーマを切り替えることができます。その機能を活用の1つとして、A/Bテストができる環境を作ってみる事を考えてみたいと思います。

タイトルに「その1」というのがついているのは、今回は A と B を設定するところまでで、どうやって結果を知るのがいいのかは次回に続く事になります。「その2」については、いろいろな方法があるような気がしますので、このエントリーに続く「その2」を提案をブログに書いてくれる人がいると嬉しいです。

Cookie の値を活用してルールを利用する

現在リリースしているバージョンに同梱されている「site2016」テーマの場合には特定のページにアクセスした際に Cookie を設定してトップページのスライダーの中身を変更するというデモになっています。

方法としては、特定のページにアクセスした際に Cookie を設定し、次にトップにアクセスした際にはルールが効いてスライダーの中身が変更になります。


標準のトップページ

家庭用製品に興味を持った人のためのトップページ

業務用製品に興味をもった人のためのトップページ


上記の画像をいろいろクリックして、トップページアクセスしてみると URL が同じでも状況に変化があることが確認できるのではないかと思います。


初めてアクセスした人に Cookie のルールを適用する方法

上記の場合は、あるページにアクセスしたとか、フォームでアクションを起こした後とか、今後のアクセスで情報が変わるようにするという事でしたが、今回は初めてのアクセスで CMS のプログラムが起動する前の段階で Cookie を設定したいという事になります。

標準の index.php を acms.php に変更し、上記のプログラムを index.php で用意します。

index.php

<?php

$cookieName = "ABTEST";
$day = 7;

if (!$_COOKIE[$cookieName]) {
	if (rand(0,1)) {
		setcookie($cookieName, "A", time() + 3600 * $day);
		$_COOKIE[$cookieName] = "A";
	} else {
		setcookie($cookieName, "B", time() + 3600 * $day);
		$_COOKIE[$cookieName] = "B";
	}
}

require("acms.php");

あとは、ルールに「A/Bテスト( A )のとき」という設定を追加します。a-blog cms はルールを作る事で、テーマやコンフィグを分けたり、サーバー側のキャッシュを分けることができます。Bのルールを作るのかは、運用次第で設定してください。



グローバル変数で Cookie の情報を出るように

なんらか切り替えができるようにしたら、次にグローバル変数で Cookie の情報を出るようにしたいと思います。

config.server.php

hook.php が活用できるような設定を ON にできるようにします。

define('HOOK_ENABLE', 1);

/php/ACMS/User/Hook.php

以下のように hook.php を変更する事で %{COOKIE_AB_TEST} に A とか B が出るようになるはずです。この部分で IFブロックやインクルードを調整して何らか情報を取得できるようなことを考えてみることになります。

public function extendsGlobalVars($globalVars)
{
	if ($_COOKIE['ABTEST'] ){
		$globalVars->set('COOKIE_AB_TEST', $_COOKIE['ABTEST'] );
	}
}

問題点を修正し 8/2 にアップデートしました。


関連記事

この記事のハッシュタグ から関連する記事を表示しています。

PhotoCollage.js を a-blog cms のブログテーマに実装してみた

エントリー新規投稿画面で次のエントリーコードっぽいものを placeholder に表示させるカスタマイズ

a-blog cms のユーザーアイコンに Gravatar を反映するカスタマイズ

できるだけ簡単に子ブログにコンフィグセットを設定する方法を考える

コンフィグセットを利用していない時にコンフィグセット管理を表示させないカスタマイズを考えてみる

編集者権限でバナーモジュールをフロント側で編集できるような UI を使えるような実装を考える