こんにちは
dainitiさん楽しそうなことやってますね。
私のサイトはSAKURAのプレミアムですが、yamaさんが仰るようにPATH_INFOが取れませんでした。
PATH_INFOはApacheのmod_rewriteの影響を受けるんですね。
各イベントでの変数をダンプしてみたところ、REQUEST_URIにはサーバールートからの相対パスが常にセットされているようなので、プラグインでカウント処理を作り、$modx->config[’site_url’]と連結するって手はどうでしょう(MODxをサブフォルダにインストールしてると単純に連結するとサブフォルダがダブるので注意)。
参考 : ダンププラグイン
ログインしている場合のみassets/cache/******にログを書き込みます。
注意) このプラグインはセキュリティ上好ましくありませんので、試された後はログファイルとプラグインを必ず消してください。
(類似アドオンをうまく探せなかったので自作しました)
プラグイン名 : 任意
設定 : 特になし
システムイベント : コード内のcase文と同じイベントをチェック
注意 : $logFilePath を設定する行を書き換えてください。 #重要#
コード:
// ログインしている時だけ動作
if(isset($_SESSION['mgrValidated']) && $_SESSION['mgrValidated']) {
$e = &$modx->event;
switch ($e->name) {
// プラグインの「システムイベント」でチェックしたイベントを記述
case "OnWebPagePrerender":
case "OnWebPageComplete":
case "OnWebPageInit":
case "OnLoadWebPageCache":
// ログファイルのサーバ上の物理パス(書き込みが成功する確率が高いキャッシュフォルダを使います)
// #### hogehogeを変えて!!!ERROR LINE!!!を消すまでエラーで実行できません。####
$logFilePath = $modx->config['base_path'] . 'assets/cache/hogehoge.txt'; !!!ERROR LINE!!!
// ログの編集
// ブロックヘッダ
$out = '' ;
$out .= '-------------------------------------------------------------------------' . "\n" ;
$out .= '-' . "\n" ;
$out .= '- Event : ' . $e->name . ' [' . date("Y/m/d H:i:s") . ']' . "\n" ;
$out .= '-' . "\n" ;
$out .= '-------------------------------------------------------------------------' . "\n" ;
// ログ内容
$out .= '********** $_SERVER **********' . "\n" ;
$out .= print_r($_SERVER, TRUE) . "\n" ;
$out .= '********** $_COOKIE **********' . "\n" ;
$out .= print_r($_COOKIE, TRUE) . "\n" ;
$out .= '********** $modx->config **********' . "\n" ;
$out .= print_r($modx->config, TRUE) . "\n" ;
// ブロックフッタ
$out .= "\n\n" ;
// 書き出し(追加)
if ($handle = fopen($logFilePath, 'a')) {
fwrite($handle, $out) ;
fclose($handle) ;
}
unset($logFilePath, $out, $handle);
break;
}
}
余談)
bbcloneの実装は、カウント処理はプラグイン、集計結果はモジュールでできたら皆喜ぶかもしれませんね。
参考 :
http://www.modxcms.com/Page-Hit-Counter-878.html