ZendFrameworkでモバイル向けGoogleAnalyticsコード(PHP版)を仕込む方法

GoogleAnalyticsはモバイル版の解析コードを用意している。

しかし、これは携帯サイト用のxhtmlファイルなどに仕込むのは結構面倒で、組み合わせ次第で上手くいかずハマる。

せっかく解析コードはPHPなので、この際、自システムに組み込んでしまう方法を提案。
といってもほぼコピー&ペーストですが。

1)
ga.php
配られているga.phpをとりあえずWEBから見えるところに設置。
このパスは2)で使います。

2)
Zend Frameworkのモデルなどで、GoogleAnalyticsの前半コードと画像タグ用URLを出力出来るようにする。


public function googleAnalyticsGetImageUrl() {
$GA_ACCOUNT = "出力されているIDを自分で入れる";
$GA_PIXEL = "/ga.php"; //ga.phpまでのパスは適宜修正

$url = "";
$url .= $GA_PIXEL . "?";
$url .= "utmac=" . $GA_ACCOUNT;
$url .= "&utmn=" . rand(0, 0x7fffffff);
$referer = $_SERVER["HTTP_REFERER"];
$query = $_SERVER["QUERY_STRING"];
$path = $_SERVER["REQUEST_URI"];
if (empty($referer)) {
$referer = "-";
}
$url .= "&utmr=" . urlencode($referer);
if (!empty($path)) {
$url .= "&utmp=" . urlencode($path);
}
$url .= "&guid=ON";
return str_replace("&", "&", $url);
}

3)
コントローラー側で、この解析コードを出力するコードを追加

2)のモデルが$_itemModelというオブジェクト、Smartyが$_smartyObjectというオブジェクトならば

$ga = $this->_itemModel->googleAnalyticsGetImageUrl();
$this->_smartyObject->assign('ga’,$ga);

とでもやればOK。

4)
テンプレートで出力処理

タグの直前に


{if $ga != "" }<img src="{$ga}" />{/if}

GoogleAnalyticsが提供しているPHPコードを調べてみたが、結局やっていることは
PHPプログラムを利用して、必要な情報(リファラや現在のページなど)を取得し、ga.phpに渡してGoogleAnalyticsにデータを送っているに過ぎない。
なので、配られているコードは全て自システムに組み込んでもほぼ問題無い動作をするはず。

テンプレート中に

<?php

などというコードは書きたくないわけですよ。ええ。
WordPressは?という話もありますが。