EC-CUBEの2.4系にGoogle Analyticsを埋め込むのに時間がかかったのでメモ
任意の場所に、ga.phpを設置します。
今回は、/mobile/の中に設置しました。
モバイル用のテンプレートにGoogle Analyticsのコードを埋め込んでいきます。
site_frame.tplのhtml開始タグの前に
<!--{php}-->
// Copyright 2009 Google Inc. All Rights Reserved.
function googleAnalyticsGetImageUrl() {
$GA_ACCOUNT = "◯◯-◯◯◯◯◯◯◯◯-◯";
$GA_PIXEL = "/mobile/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);
}
<!--{/php}-->
を追加します。
次に、site_main.tplのbody終了タグの前に
<!--{php}-->
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
<!--{/php}-->
<img src="<!--{php}-->echo $googleAnalyticsImageUrl<!--{/php}-->" width="1" height="1" />
を追加します。
このままでは、imgタグが上手く表示されないので
/data/class/SC_MobileImage.phpの92行目あたりの処理に一文加えます。
// HTML中のIMGタグを変換後のファイルパスに置換する
foreach ($images[1] as $key => $value) {
if (preg_match('|/ga.php|', $value)) continue; // この行を追加
$converted = $imageConverter->execute(preg_replace('|^' . URL_DIR . '|', HTML_PATH, $value));
if (isset($converted['outputImageName'])) {
$buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer);
} else {
$buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
}
}
ここまでで上手くいくと思いますが、ならない場合はga.phpの138行目あたりの
$cookie = $_COOKIE[COOKIE_NAME];
$guidHeader = $_SERVER["HTTP_X_DCMGUID"];
if (empty($guidHeader)) {
$guidHeader = $_SERVER["HTTP_X_UP_SUBNO"];
}
if (empty($guidHeader)) {
$guidHeader = $_SERVER["HTTP_X_JPHONE_UID"];
}
if (empty($guidHeader)) {
$guidHeader = $_SERVER["HTTP_X_EM_UID"];
}
を
$cookie = (isset($_COOKIE[COOKIE_NAME])) ? $_COOKIE[COOKIE_NAME] : '';
$guidHeader = (isset($_SERVER["HTTP_X_DCMGUID"])) ? $_SERVER["HTTP_X_DCMGUID"] : '';
if (empty($guidHeader)) {
$guidHeader = (isset($_SERVER["HTTP_X_UP_SUBNO"])) ? $_SERVER["HTTP_X_UP_SUBNO"] : '';
}
if (empty($guidHeader)) {
$guidHeader = (isset($_SERVER["HTTP_X_JPHONE_UID"])) ? $_SERVER["HTTP_X_JPHONE_UID"] : '';
}
if (empty($guidHeader)) {
$guidHeader = (isset($_SERVER["HTTP_X_EM_UID"])) ? $_SERVER["HTTP_X_EM_UID"] : '';
}
のように変更すれば上手くいくと思います。