携帯版 Analyticsについて  【解決済み】

質問全般・改善要望
返信する
ksz2000
メンバー
メンバー
記事: 10
登録日時: 2010年3月04日(木) 19:44

携帯版 Analyticsについて

投稿記事 by ksz2000 »

[サーバ]
 ヘテムル
 PHPバージョン:5.2.8
[modx]
 バージョン:1.0.0J
 アドオン:MobileConverter
 ※Google Analyticsについては、実装していません。

検証実機 auのみ


携帯版のAnalyticsを、サイトに設定したのですが、上手くいきません。
通常のサイトの中に、携帯専用のリソースを作り、そのリソース以下に携帯用として専用のページを設定しています。

状態としては、最後に記述されている、ビーコン画像がリンク切れを起こしている状態で、色々と設定を変えてみても、リンク切れが解消されません。

ga.phpにtypoがあり、不具合等もあるようですが、そのあたりについては、ga.phpを修正してあります。


以下設定
*********トラッキング コード*********

<?php
// Copyright 2009 Google Inc. All Rights Reserved.
$GA_ACCOUNT = "MO-********-*";
$GA_PIXEL = "/ga.php";

function googleAnalyticsGetImageUrl() {
global $GA_ACCOUNT, $GA_PIXEL;
$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);
}
?>

***********************************************
これをスニペット[[*****]]として保存し、携帯用のテンプレートの、<html>の前に挿入。

*********ビーコン画像用php*********
<?php
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
?>
<img src="<?= $googleAnalyticsImageUrl ?>" />
*****************************************
については、

<?php
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
?>
の部分をスニペット[[●●●●]]として保存。

<img src="<?= $googleAnalyticsImageUrl ?>" />
については、テンプレートに直接書き込み。


テンプレートのサンプルとしては、

******テンプレートサンプル******
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
[[*****]]
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<title>携帯用</title>
</head>
<body>

[*content*]

[[●●●●]]
<img src="<?= $googleAnalyticsImageUrl ?>" />
</body>
</html>
*********************************************
という状態です。

ga.php
設置場所は、MODxインストールフォルダーに置いてあります。

よろしくおねがいします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 携帯版 Analyticsについて

投稿記事 by yama »

ナナメ読みですが、、
ksz2000 さんが書きました: <?php
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
?>
の部分をスニペット[[●●●●]]として保存。
ここは

コード: 全て選択

<?php
 $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
 $modx->setPlaceholder('googleAnalyticsImageUrl', $googleAnalyticsImageUrl);
?>
このようにして、

コード: 全て選択

<img src="[+googleAnalyticsImageUrl+]" />
こうするといいんじゃないかという気がします。プレイスホルダというのですが、MODxではこんなふうにしてページ内で変数などの値を渡します。

追記

それか、

コード: 全て選択

return googleAnalyticsGetImageUrl();
このようにして「ビーコン画像URL」などのスニペット名で保存し、

コード: 全て選択

<img src="[!ビーコン画像URL!]" />
直接このように呼んじゃってもいい気もします。上記のように、たぶんキャッシュオフ書式で書く必要がありますね。
ksz2000
メンバー
メンバー
記事: 10
登録日時: 2010年3月04日(木) 19:44

Re: 携帯版 Analyticsについて

投稿記事 by ksz2000 »

yamaさん
ありがとうございます。

コード: 全て選択

<?php
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
$modx->setPlaceholder('googleAnalyticsImageUrl', $googleAnalyticsImageUrl);
?>
このようにして、

コード: 全て選択

<img src="[+googleAnalyticsImageUrl+]" />
こうするといいんじゃないかという気がします。プレイスホルダというのですが、MODxではこんなふうにしてページ内で変数などの値を渡します。
教えていただいた方法で、とりあえずビーコン画像のリンク切れは、解消されました。
後は、ログが生成されるまで、様子をみてみます。

一応、こちらも試してみましたが、こちらの方法では、上手くいきませんでした。

コード: 全て選択

return googleAnalyticsGetImageUrl();
このようにして「ビーコン画像URL」などのスニペット名で保存し、

コード: 全て選択

<img src="[!ビーコン画像URL!]" />
直接このように呼んじゃってもいい気もします。上記のように、たぶんキャッシュオフ書式で書く必要がありますね。
ksz2000
メンバー
メンバー
記事: 10
登録日時: 2010年3月04日(木) 19:44

Re: 携帯版 Analyticsについて

投稿記事 by ksz2000 »

yamaさんに教えて頂いた方法で、ビーコン画像のリンク切れは、解消されましたが、
アクセスログが取れない状態です。

トラッキングコードの
$GA_PIXEL = "/ga.php";
$url = "";
あたりを色々と設定を変えてみたのですが、ことごとく反応がありません。

コード: 全て選択

<?php
  // Copyright 2009 Google Inc. All Rights Reserved.
  $GA_ACCOUNT = "MO-********-*";
  $GA_PIXEL = "/ga.php";

  function googleAnalyticsGetImageUrl() {
    global $GA_ACCOUNT, $GA_PIXEL;
    $url = "";
    $url .= $GA_PIXEL . "?";
*
*
*
通常のサイトの中に、携帯専用のリソースを作り、そのリソース以下に携帯用として専用のページを設定しています。
PC版のAnalyticsの方は、問題なく動いているのに、何故なんでしょうか?
※モバイルページのテンプレートには、PC用のAnalyticsは設定しておりません。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 携帯版 Analyticsについて

投稿記事 by yama »

スニペット化したトラッキングコードの「function googleAnalyticsGetImageUrl()」のすぐ上に「googleAnalyticsGetImageUrl();」と書き足して、このスニペットをビーコン画像URL出力用のスニペットとしてそのまま使えばよさそうに見えます。
ksz2000
メンバー
メンバー
記事: 10
登録日時: 2010年3月04日(木) 19:44

Re: 携帯版 Analyticsについて  【解決済み】

投稿記事 by ksz2000 »

解決いたしましたので、報告です
大変お恥ずかしいのですが、ビーコン画像の吐き出し変数の確認をしていれば、比較的簡単に対処できた問題だったようです。

まず原因は、トラッキングコード内で、$GA_ACCOUNT, $GA_PIXELの変数が正しく動かなかった事のようです。
当初のソースは下記のようになっていました。

コード: 全て選択

<img src="?utmac=&utmn=1699304076&utmr=http%3A%2F%2Fweb.heteml.jp%2Fbest%2Fmanager%2Findex.php%3Fa%3D3%26amp%3Bid%3D2%26amp%3Bopened%3D&utmp=%2Fbest%2F&guid=ON" />
これを見るがきり、ga.phpへのパスと、トラッキングNo.が吐き出されていません。
本来は、下記のように変数が吐き出されて、いなければならないはず。

コード: 全て選択

<img src="/ga.php?utmac=MO-00000000-1&utmn=2064119554&utmr=http%3A%2F%2Fweb.heteml.jp%2Fbest%2Fmanager%2Findex.php%3Fa%3D3%26amp%3Bid%3D2%26amp%3Bopened%3D&utmp=%2Fbest%2F&guid=ON" />
そこでまず、$GA_ACCOUNTと$GA_PIXELの変数がスコープの外にある必要が無いので、スコープの中に入れて確認してみました。

コード: 全て選択

<?php
// Copyright 2009 Google Inc. All Rights Reserved.
  function googleAnalyticsGetImageUrl() {
  $GA_ACCOUNT = "MO-00000000-1";
  $GA_PIXEL = "/ga.php";


    global $GA_ACCOUNT, $GA_PIXEL;
//以下変更なし
ソースを確認しても、変化がありません。

そこで、トラッキングコードの$GA_PIXELに入っていた、パスを$url に挿入しました。

コード: 全て選択

<?php
// Copyright 2009 Google Inc. All Rights Reserved.

  $GA_ACCOUNT = "MO-00000000-1";
  $GA_PIXEL = "";

  function googleAnalyticsGetImageUrl() {
    global $GA_ACCOUNT, $GA_PIXEL;
    $url = "/ga.php";
//以下変更なし
再度ソースの確認をすると、吐き出されたタグは、

コード: 全て選択

<img src="/ga.php?utmac=&utmn=2064119554&utmr=http%3A%2F%2Fweb.heteml.jp%2Fbest%2Fmanager%2Findex.php%3Fa%3D3%26amp%3Bid%3D2%26amp%3Bopened%3D&utmp=%2Fbest%2F&guid=ON" />
となり、ga.phpのパスが入ったので、ビーコン画像のリンク切れに関しては、解消されます。

しかしこの状態では、まだトラッキングNo.が入っていません。
そこで、今度は強制的にトラッキングNo.を表示させるように変更をします。
$GA_ACCOUNTに入っていた、トラッキングNo.を、$url .= "utmac=" 以降に書込み、その後にある . $GA_ACCOUNTを削除します。

コード: 全て選択

<?php
// Copyright 2009 Google Inc. All Rights Reserved.

  $GA_ACCOUNT = "";
  $GA_PIXEL = "";

  function googleAnalyticsGetImageUrl() {
    global $GA_ACCOUNT, $GA_PIXEL;
    $url = "/ga.php";
    $url .= $GA_PIXEL . "?";
    $url .= "utmac=MO-00000000-1";
//以下変更なし
これで、タグを確認すると

コード: 全て選択

<img src="/ga.php?utmac=MO-00000000-1&utmn=2064119554&utmr=http%3A%2F%2Fweb.heteml.jp%2Fbest%2Fmanager%2Findex.php%3Fa%3D3%26amp%3Bid%3D2%26amp%3Bopened%3D&utmp=%2Fbest%2F&guid=ON" />
となり、やっと動作確認が取れました。

理由は不明ですが、$GA_ACCOUNT, $GA_PIXELの変数に絡んで、他のCMSでも似たような現象が起きているようです。

もう少し、綺麗なやり方もあるかと思いますが、とりあえずこれで動いているのでひとまずは、解決と言うことで。

またサーバーの設定等もあるようですので、この方法で必ず上手く行くわけではないと思いますが、他の方の参考になればと思います。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 携帯版 Analyticsについて

投稿記事 by kazuike »

すみません。すごい斜め読みなので、間違っていたらごめんなさい。

スニペットのコードは、ドキュメントパーサのメソッド内でevalされるので、

コード: 全て選択

<?php
$var="xxx";
?>
としても、「$var」はグローバル変数にならなかったと思います。

もし、グローバル変数として、関数内で使いたければ、

コード: 全て選択

<?php
global $var;
$var="xxx";

function hogehoge() {
global $var;
…
}
?>
のような感じにすれば、良かったような気がします。

つまり、関数の外側でもglobal宣言したら、それで解決しちゃったりするかも?
ってことです。
(同じ名前が、他に使われていないことが前提ですが)

#私も、以前、変数のスコープで、はまったことがあり、この方法で逃げたことがあったような気がします。
#うろ覚えですが。f(^^;;
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
返信する