2006-04-16 Sun

PPhlogger|UTF-8 で使う

人様のサイト構築のお手伝いをしていたのですが、悩んだのがアクセス解析。MT 時代からいろいろ試してきましたが、今回は「PowerPhlogger」を使用させてもらうことにしました。

以前も使っていたので設定やらで苦労することもないだろう、と思って選んだのですが文字化けでえらい苦労しました。確か過去に使っていた時も苦労したのですが、きちんとメモを取っていなかったからですね。というわけで、今回は未来の自分のためにメモしておきます。

Phlogger の文字化け対策は「な!自転車でやせる」さんのこの記事「Nucleus+PPhlogger」でばっちり解決できます。散在している情報をまとめてくださっているのでとても助かります。ただ、当サイトのように文字コードが「UTF-8」の場合ちょっと修正が必要です。

「libraries/functions.lib.php」「dspStats.php」それぞれ以下のような修正コードがあります。

$keywords = mb_convert_encoding(urldecode($keywords), "EUC-JP", "AUTO");
$ArrLastRef[$i][0] = '<a href="'.htmlspecialchars($row[0]).'">'.htmlspecialchars(shortString(mb_convert_encoding(urldecode($row[0]),"EUC-JP","AUTO"),51,3)).'</a>';

これらの「EUC-JP」を「UTF-8」にするだけです。

これで検索文字列の文字化けは起きないはずなんですが、これだけではだめです。というのも、Phlogger の日本語ファイルが「EUC-JP」で作成されているため、管理画面は EUC-JP で生成されます。そこに UTF-8 に変換した検索文字列を表示すると当然文字化けしてしまうんですね。

ということで「lang/jp.inc.php」「lang/jp_tld.inc.php」を開いて文字コードを UTF-8 に変換します。これで完了です。と思いきや、今度は管理画面全てが文字化け。これで猛烈にはまったのですが、これまた「lang/jp.inc.php」を修正することで解決。一番最初の変数「$strCharset」が「EUC-JP」になっているので「UTF-8」にします。これでほんとに完了。

最後に Phlogger と同一サーバの解析をする場合だけ有効な PHP を利用した解析を、Nucleus で使用する方法です。といっても Phlogger の公式サイトに書いてある通りです。

PowerPhlogger documentation

Nucleus では動的にページを生成刷するので、全てのページに埋め込む必要はありません。「<%phpinclude%>」とかを使ってもいいのかもしれませんが、最も簡単なのは index.php に直接記述する方法でしょう。こんな感じですね。

<?php
$CONF = array();
$CONF['Self'] = '.';
// access log
$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();

?>

これで Nucleus が生成する全ページを解析してくれるはずです。ただこのやり方だと、ページごとの解析ができないようで、全て「index.php」へのアクセスとなってしまいました。「BBCloneをNucleusで使う」を参考に、なんとか Phlogger でも全ページの解析をできるようにしたいのですが、ちょっと僕では厳しそう。PHP に埋め込めば、ロボットとかの動向も補足できるらしいのですが、Nucleus ではおとなしく Javascript を使った方が実用的みたいですね。

関連記事

2006-04-16 Sun / Category - Web

このページの先頭に戻る

Copyright 2006 - Heartfield