— boreal-kiss.com

MT人気記事ランキング設置メモ

概要

MovableTypeの各記事の人気ランキングを表示する方法。MTのランキング集計についてはJeff Borlikという方が作成したT-MostVisitedというMT用プラグインが有名みたいだけど、各記事のファイル名を日付で生成している場合(例えば17174937.htmlとか)やアクセスログがgzip圧縮されていたりするとそのままでは使えない。今回はOpen MagicVox.netさんが配布しているPHPスクリプトを用いてログ解析から集計結果の表示までを行った。Open MagicVox.netさんのところにランキング表示までの一般的なインストラクションが記述されているが、カスタマイズ設定はどこかにメモしておかないと忘れると思ったのでここにメモ。なお著者の使用するサーバーはハッスルサーバー。ロリポップやSAKURA Internetの設定方法は探せばネット上にゴロゴロあると思います。

(ソースコード配布とありますが、気にせず続きは以下へ)

hottopic200ダウンロードから導入まで

1. まずOpen MagicVox.netさんが配布しているhottopic200.php.tmplをダウンロード。拡張子をphpに変更して(hottopic200.php)以下の部分を編集。出力ファイルの名前(ここではdisplay_hottopic.php)はお好みで。


//ログ集計日数
$nDivDay = 7;

//ランキング表示件数
$nTopEntry = 10;

//blog.boreal-kiss.comのアクセスログのあるディレクトリをフルパスで記述
$szLogDir = '/home/USER_ID/public/log/blog.boreal-kiss.com';

//実際の集計部分を表示するPHPモジュールを作成するディレクトリをフルパスで記述
//この出力ファイルをブログに組み込むことになる
$szOutput = '/home/USER_ID/public/www/blog/display_hottopic.php';

2. 次にGetLogFileNames関数内のログファイル名部分を編集。


//ハッスルサーバーでは"access_log_2007-09-30.log.gz"のような形式
array_push ($ret, sprintf ("access_log_%04d-%02d-%02d.log.gz", $year, $month, $day));

3. IsTargetURL関数内のログファイルの正規表現を編集。これはアクセスログ内の集計したいファイル名の形にマッチさせる必要がある。


//このブログでは"/2007/09/07155413.html"のような形式
return (preg_match ("/^\/\d{4}\/\d{2}\/\d{8}\.html/", $url));

4. 集計結果の表示内容は適宜カスタマイズする。デザインの話なのでここでは省略。例えばBITMAP: MTで人気エントリーのランキングを表示が具体例がありわかりやすかった。

5. hottopic200.phpをMTのテンプレート(名前お好みで)に追加し再構築。テンプレートにリンクするファイルをhottopic200.php、出力ファイルをhot_entry.php(名前お好みで)とした。hot_entry.phpのパーミッションを705に変更してブラウザからこのPHPファイルを実行する。集計結果が手順1のdisplay_hottopic.php(名前適宜)の中身となる。以降hot_entry.phpを実行する度に過去7日間のアクセスが集計されるようになる。タイマー等で実行を制御すれば便利。

6. display_hottopic.php(中身は集計結果の出力HTML)を表示させたいPHPファイル内(index.php等)に例えば次のように記述(注意:表示の都合によりここでは?を全角で記述しています)。ブログの出力形式がhtmlの場合はさらに手順7が必要。


<?php readfile("<$MTBlogURL$>display_hottopic.php");?>

その他の環境設定

7-A. ページをhtml形式で出力している場合(index.html等)、内部にPHPコマンドを記述してもPHPコマンドとして認識されないので(PHP初心者としては驚愕の事実)、.htaccessファイルに以下の内容を記述。


addtype application/x-httpd-php .html

(デジットさんのhtml拡張子でPHPを実行より)。ハッスルサーバーはさらにもう一行追加しないとダメらしい。


AddHandler x-httpd-php .html

(無料ブログ徹底検証: ハッスルサーバーで.phpを.htmlに偽装する方法より)

7-B. .htaccess配下のhtmlファイル全てのパーミッションを705に変更。これをしないと実行可能でないhtmlファイルが表示されなくなる。

8. MTのテンプレートに追加したhot_entry.phpも含め、再構築の度にパーミッションを変更する(666 -> 705)のは面倒なのでmt-config.cgi内に以下の内容を追加記入。これで再構築後705になる。


HTMLUmask 0072
DirUmask 0072
HTMLPerms 0777

(Luna Square: 出力ファイルのパーミッション変更より)

感想

サーバーサイドに疎いとはいえランキング結果が表示されるまでに丸一日かかった。しかし世の中どんどん便利になっていくなあ、とOpen MagicVox.netさんを筆頭に参考にさせてもらった複数のサイトさんに感謝。もう少しPHPを勉強しておいた方がよいと思ったのでFLASHとの連携もかねて以下の本を購入。手のうちが拡がるといいな。

Foundation PHP 5 For Flash (Foundation)

0 comments
Submit comment