| @技術/プログラミング

plg_paze_analyze
 大変便利な Future is Now さん提供のP_BLOG用アクセス解析プラグイン、plg_page_analyzeなんですが、いくつか不満な点があったのでちょっと改造しました。

 まず、サイト内リファラを拾ってしまう点。リファラ画面が自サイトだらけになってしまうんですよね。Page Analyzeプラグインはカウントしないリファラ($page_ex_ref)を設定できるので、当初はここに自サイトのURIを設定してサイト内移動のリファラを記録しないようにしてたんですが、これだとアクセス総計に狂いが出ることが分かりました。すなわち、サイト内をぐるぐる見て回る人がいても、Pageviewのカウントは1なわけですね。それじゃ正しい解析が出来ているとはいえないので、以下のように改造した次第です。

 include/user_include/plugins/plg_page_analyze.inc.php の89行目辺り、get referer infoに手を加え、以下のようにします。

    // get referer info
    //----------------------------------
    if (!isset ($_SERVER['HTTP_REFERER'])) {
        $page_ref = 'Direct or Unknown';
    } elseif (preg_match ('/'.$_SERVER['HTTP_HOST'].'/', $_SERVER['HTTP_REFERER'])) {
        $page_ref = 'Internal Referer';
    } else {
        $page_ref = $_SERVER['HTTP_REFERER'];
        urldecode ($page_ref);
    }

 これでサイト内移動のリファラは 'Internal Referer' と表示されるようになります。一件落着。

 次に手を加えたのが analyze/page_analyze.php。UserAgentのブラウザ判定がIE 7に対応していなかったので、214行目辺りに

    } elseif (preg_match ("/MSIE (7)/", $key)) {
        $value = "Internet Explorer 7";
        $array_3_browser_1[$key] = $value;

を追加。さらに検索エンジン解析がTechnoratiに対応していなかったので、440行目辺りに

    } elseif (preg_match ("/technorati.*query=([^&]*)&/", $key_de, $matches)) {
        $value = "Technorati";
        $array_4_se_1[$key] = $value;
        $array_4_se_w[$i] = $matches[1];
        $i ++ ;

を追加。さらにさらに、@niftyの解析がうまく行ってなかったので、417行目辺りの

} elseif (preg_match ("/search.nifty.*text=([^&]*)&/", $key_de, $matches)) {

} elseif (preg_match ("/search.nifty.*&Text=([^&]*)/", $key_de, $matches)) {

と改変。これでずいぶんスッキリしました ;-)

追記(もっとカスタマイズ)

 ドロップダウンメニューをつくって index.php から直接目的の解析画面に行けるように、さらにカスタマイズしてみました(↑上の方の画像参照)。改変するのは同じく plg_page_analyze.inc.php の258行目付近。

<div class="menu-box" id="page-analyze-admin">
<h2 class="menu-box"><a href="{$cd}/analyze/page_analyze.php">{$admin_title}</a></h2>
<form method="post" action="{$cd}/analyze/page_analyze.php" id="page-analyze">
<fieldset id="analyze-date">
<select name="g">
<option value="0">Statistics</option>
<option value="1">Access/h</option>
<option value="2">Host/IP</option>
<option value="3">User Agent</option>
<option value="4">Referer</option>
<option value="5">Requested URI</option>
</select>
<input type="hidden" value="{$yyyy}" name="y" class="bordered" />
<input type="hidden" value="{$mm}" name="m" class="bordered" />
<input type="hidden" value="{$dd}" name="d" class="bordered" />
<input type="submit" value="GO" />
<!-- <input type="hidden" tabindex="100" accesskey="a" value="Admin" /> -->
</fieldset>
</form>
</div>