2006-04-20 Thu

PPhlogger|Nucleus でページ別解析

先日導入した「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

このページの先頭に戻る

Copyright 2006 - Heartfield