MTで人気記事アクセスランキングを表示する方法

数日前から右側メニューにアクセスランキングを表示しています。

ranking.png

サーバーの環境によっては導入できない場合もあるのですが、僕の利用しているさくらインターネットのレンタルサーバーでは問題なく表示できました。思い起こせばMT3.2時代から何度も挑戦しては失敗してきたアクセスランキング。ついに、ここに実現。忘れないようにメモしときます。(それにしても政治からネタまで…。幅広いブログだなあ。)

ランキングを表示させるためのphpをダウンロード

いきなりphpだなんていうと敷居が高いように感じますが、ほぼ完成したものを公開されている方がいらっしゃいます。まずはありがたくダウンロードさせていただきます。

MTにインストール

ダウンロードしたファイルをテキストエディタで開き、中身を全部コピーした後、「デザイン > テンプレート > インデックステンプレートを作成」で新規画面に貼り付け。テンプレート名と出力ファイル名は任意で保存。ちなみに僕はテンプレート名を「アクセスランキング」、ファイル名は「ranking.php」としました。これでひとまず保存しておきましょう。

設定変更

ここからがいよいよ本番です。先ほど作成したテンプレートを自分の環境に合わせて書き換えます。まずは14行目から24行目までの設定。ログファイルまでのパスが問題ですが、さくらインターネットのサーバーの場合は /home/アカウント名/log となります。参考までに僕の設定は次のとおりです(その後、表示件数は5件に減らしました)。24行目のphpの名前は任意ですが、最終的に使用するファイルになりますので忘れないようにしましょう。

つぎに、37 行付近の GetLogFileNames を確認。これはアクセスログのファイル名を設定する項目ですが、大体はこのままで大丈夫です。最終的にログをきちんと読めていない場合は修正する必要があります。

そしていよいよ鬼門の76 行付近の IsTargetURL の設定。はじめに言うのを忘れていましたが、アクセスランキングを表示させるためには、Permalink のurlが月日の組み合わせなど数字の場合のみ可能です。これを「ランキング集計したいファイル名にマッチするよう Perl の正規表現を修正してください。(Open MagicVox.net)」ということなのですが、Open MagicVox.net さんの例があらかじめ入力されています。これを自分の環境と見比べてパターンを探して色々と調整してみてください。僕の場合のurlは

http://musicmaniacs.net/archives/2008/01/27200000.php

こんな感じ。これは小粋空間さんが推奨している形式にのっとっていますので、あらかじめこうしていた人は僕の設定のままで流用できます。ちなみにMTの設定では

%y/%m/%d%h%n%s%x

こうなってます。で、これを Perl の正規表現に直すと次の通り。

パターンがお分かりでしょうか?{ } 内の数字が url の文字数です。こんな感じで設定してください(こんな適当な説明でいいのだろうか…)。

出力されるコードのレイアウトを整える

113行目からが出力されるコードの設定です。自分の環境に書き換えましょう。


いよいよphpを動かします

さくらインターネットの場合、phpを動作させるのはちょっとしたコツが必要です。今回は当然phpを動作させることができますよね?の前提で話をしてますが、それができていない場合、mt-config.cgi に次のコードを追加して再構築してくださいね。

DBUmask 0022
HTMLUmask 0022
UploadUmask 0022
DirUmask 0022
HTMLPerms 0777
UploadPerms 0777

これで、一度 ranking.php にアクセスしてみましょう。ログファイルを自動的に引っ張ってこれれば大成功。もしエラーが出た場合はもう一度最初から設定を見直しましょう。

cronでphpを定期実行

さくらインターネットのサーバコントロールにアクセスし、「アプリケーションの設定 > CRON設定ファイルの編集」で、ranking.php ファイルを定期実行するよう設定しましょう。これを設定しないと、ランキングが定期的に更新されません。いちいち自分でアクセスして更新してもいいんだけど、それじゃあ、ねえ。ということで、たぶんこんな感じに設定できれば大丈夫だと思います。

ranking5.png

いよいよブログに表示させます

僕の場合はウィジェットとして保存して表示させてます。そのほうがMT4っぽくてクールです。新しいウィジェットとして次の通り作成しました。ここで表示に使用するのは ranking.php ではなく、最初に設定した hottopic.php ですのでお間違えなく。

ranking6.png

いよいよ完成です

全部終わったらブログを再構築しておしまいです。たぶん、アクセスランキングが表示されているかと。最初にも書きましたが僕はこれを実現するのに3年以上の年月を要しました。一度チャレンジしてみて失敗しても、何度もチャレンジすればいつかはできます。わからないとこがありましたら答えられる範囲でお答えいたしますのでコメントください。では、最後に

なげーよww

説明長すぎ。疲れた。

コメントを書く

Your email is never shared. * 印の項目は必須項目です。

*
*