2006-04-20 Thu
先日導入した「PowerPhlogger」ですが、Nucleus で PHP を利用した解析をすると、最初はどのページへのアクセスも同一ページ、具体的にいえば「index.php」へのアクセスと見なされてしまいます。同じく PHP で書かれたアクセス解析「BBClone」でも同じ問題が発生するのですが、「BBCloneをNucleusで使う」で丁寧な対処方法が書かれています。これを参考に、Phlogger でも Nucleus ページ別解析を可能にしてみました。
まず、Phlogger 公式サイトの「PowerPhlogger documentation」に書かれている PHP コードを Nucleus の index.php に書き込みます。「$id」は Phlogger のユーザー名。「PHL_SCRIPT_PATH」は絶対パスか index.php からの相対パスです。これだけで解析は始まりますが、このままでは全てのページが index.php となります。これを回避する為に、index.php を次のように修正します。
<?php $CONF = array(); $CONF['Self'] = '.'; // access log $request = strtolower($_SERVER["REQUEST_URI"]); $id = "yourid"; define('PPHL_SCRIPT_PATH', './pphlogger/'); // relative (e.g. "pphlogger/") or absolute path to your PP-directory $st = 'php'; include(PPHL_SCRIPT_PATH."pphlogger.php"); include('./config.php'); selector(); ?>
「$request」という変数に、サーバーへリクエストされた URI をほりこんでいます。で、次に「pphlogger.php」の 68 行目あたり「cut the URL if this hasn't be done already by PHP」というコメント直後の if 文を次のように修正。
if (!(defined('WIN32_PHPEXE') && ($st == 'php' || $st == 'phpjs'))) { // pushman // $url = cutURL($url); $url = $request; // namhsup }
「$url」に追加した「$request」を代入しています。これでページ別解析が可能になります。ただ、相変わらずページタイトルは取得できません。僕は「NP_Permalink」を利用しているのである程度は URI でどのページか判別できるのですが、Nucleus 標準のままだとアイテム ID でしか表示されないので結局どのページが見られているのか判断できなさそう。でも ID がわかればデータベースに問い合わせてタイトル取得できるような気もするのですが…過去に Nucleus のデータベースがぶっ壊れた経験があるので、データベースをいじくるのはちょっと怖い。なので phpMyAdmin を使って気が向いたらタイトルを入力するという、とんでもなく効率の悪いことをしています。
NP_Permalink を使っててほんとよかったです。ありがとうございます。
2006-04-20 Thu / Category - Web
« 古い記事
PPhlogger|UTF-8 で使う
新しい記事 »
Google から三行半