MovableType(MT3)で人気記事のランキングを表示する

【この記事の所要時間 : 約 5 分

ブログでは意外な記事にアクセスがあることが多い。最近ではブログの定番として人気記事ランキングなるものがつけられているので、遅ればせながら、MovableType(MT3)で人気記事のランキングを表示してみた。
利用したのは、hottopicというモジュールである。

Movable Type で構築したサイトで、各記事ごとのアクセス数を集計できれば、”今週の人気記事 トップ 10″のような機能が実現できるでしょう。丁度、ここのホストでも Apache のアクセスログがユーザに解放されているので、これを利用することができそうです。結果、特にプラグインを追加せず、PHP を使用することで、サイトデザインの容易性、他ホストでの可搬性を高めつつ、これを実現することができました。また、記事のファイル名がエントリ ID 以外(日付やキーワード)で生成されている場合にも対応でき、cron による定期実行やブラウザからのランキング更新も可能です。

apacheのログを利用して集計をかけ、それを上位から表示していくというモジュールである。
現在使っているサーバは、coreserverである。
提供されているモジュールを利用環境ごとに合わせてパラメータを修正する。
利用したモジュールは、hottopic300.php.tmpl というものである。(hottopic200.php.tmpl という古いバージョンもあり、ネット上ではそちらの設定方法の方を解説しているブログも多いので注意が必要である。)

// 過去 n 日間のログを集計する
$nDivDay = 7;
// 上位 n 件を集計する
$nTopEntry = 10;
// ログファイルのディレクトリパス
$szLogDir = ‘/virtual/******/log’;
// 集計結果の出力ファイルパス
$szOutput = ‘/virtual/******/public_html/hottopic.inc.php’;

というような形である。
つまづく可能性があるのは、エントリーファイル名の部分かもしれない。
このブログでは、http://canalize.jp/archives/******.php という形になっている。6ケタの数字であるので、MTEntryIDパラメータには、pad=”1″を忘れずにつけておく必要があるが、代入先のMTEntryIDにはつけなくてよかった。何回か試したが、両方につけるとうまくいかないので注意が必要である。

// パーマリンクとエントリIDの紐付け
$gAllEntries = array (

‘/archives/<$MTEntryID pad="1"$>.php’ => ‘<$MTEntryID$>‘,

null);

あとひっかかるとすれば、apacheのログ名の正規表現部分だろうか。本サーバーの設定では、canalize.jp.2012.12.31.logのようなファイル名になっているので、以下のようにしておく。

array_push ($ret, sprintf (“canalize.jp.%04d-%02d-%02d.log”, $year, $month, $day));

ちなみに、coreserverの場合、生ログの出力はデフォルトでは「保存しない」になっているので、「保存する」に設定を変更しておく必要がある。
あとはデザイン部分のみである。
上記のように修正した hottopic300.php.tmpl をコピーして、MT管理画面のインデックステンプレートにて「テンプレートを新規作成」して貼り付ける。出力ファイル名は適当でOK。テンプレートを再構築して、このテンプレートのパーミッションが755になっていることを確認する。なっていない場合は、以下のサイトをみて、mt-config.cgi の修正を行おう!
MTで人気エントリーのランキングを表示 【ウェブログ】
テンプレートのパーミッションが755になっていれば、ブラウザでテンプレートにアクセスしてみる。エラーがでている場合は、それを修正する。たいていは書き込み権限がないとか正規表現が間違っているとかそんな感じだと思われる。
エラーが表示されていない場合は問題なし、集計結果の出力ファイルもできているはずである。
あとは、ランキングを表示させたいサイドバーなどに集計結果の出力ファイル名を以下のような感じで追加する。

<MTInclude file="/virtual/shoulder/public_html/*******.php">

これでうまく表示できていれば、OK。
あとは、cronで定期実行して自動更新すれば完成である。
たまにアクセス解析をみているのでなんとなく知っていたが、結構意外なランキングである。

Movable Type 6 本格活用ガイドブック (Web Designing BOOKS)
藤本 壱 柳谷 真志 奥脇 知宏
マイナビ
売り上げランキング: 97,772
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です