2005/01/03

人気ランキングを設置

 休みが取れたのに年明けからベトナムでは何もすることがないのでブログで遊んでます。今日は、自分の書いたどの記事に注目が集まったかというのはあらわすためにmt-mostvisitedプラグインを使ってみることにしました。よくブログで見かける人気ランキングというあれです。

 「#BLOG: MTで人気記事ランキングを作る」と「HuntingGirledCollective: XREA.COM、サービス良過ぎ」にmt-mostvisitedの関連記事とその解説があったので参考にさせてもらいました。

 似たようなもので、「人気記事ランキングを表示 : SOHO MIND」ではJava Scriptで実現させる方法が載ってましたが、どうやらカウンターが自動でリセットされないようなので遠慮しました(古い記事のヒット数が多いのは当たり前なので)。自分で改造すればいいんですけどそんなスキルはありません。ただ設置に関して言えばmt-mostvisitedよりは問題が無さそうです。

 mt-mostvisitedの導入にはかなり骨が折れました。正月から半日もパソコンに向かっていました。たぶんオリジナルのものでは上手くいかなかっただろうと思います。アパッチのログのファイル名にはいろいろあるようで、サーバーによってはオリジナルのプラグインではログを取得できないことがあるようです。前出の「#BLOG: MTで人気記事ランキングを作る」ではそれに対処したプラグインが提供されているので、これまで上手くいかなかった方も試す価値ありです。私の場合は改造版とほぼ同じファイル名だったので、改造版を少しいじったら上手くいきました。
 覚え書きとして手順を記します。
①アパッチのログ解析モジュールの追加
ParseLog.pmをextlib/Apacheへ。
②MT-MostVisitedプラグインの追加
mt-mostvisited.plを取得してプラグインフォルダへアップロード
 「$logdir」に、Apacheがログを生成するディレクトリへのパスを指定。
 「$root」に、Movable Typeのアーカイブパスを指定(public_html以下からのパスで、public_htmlは含めない)。
 「$filetype」に、記事ファイルの拡張子を指定。
 そんでもって、ついでにmt-rebuild.plとcronを使って定期的にリビルドされるようにしました。解説にある通り毎回Main Indexごとリビルドするのもどうかと思って、これまた解説通りにランキングのみのテンプレートを別に作ってMTIncludeで取り込みました。
 残してある期間のログ(私は1月残してるので月刊ランキングになります)を全て解析するようなので、実行は一日一回で十分でしょう。
 mt-rebuild.plについては、Nergal 業務日誌が詳しいです。以前にも利用しようと思ったのに断念したことがありましたが、ここを見たら難なく解決しました。①mt.cgiと同じ場所に置く(間違えてpluginsに置いてました)②パーミッションを700かそれに順ずるものに変更する(ボケてました)、というのが味噌でした。

3 件のコメント:

  1. 私の使ってるサーバーでは前日以前のログは圧縮されています。
    そんなわけで私の技術力ではどうにもならないので、
    月間ランキングから前日のランキングにしてお茶を濁すことにしました。
    オリジナルのプラグインでは圧縮にも対応しているようなんですけど、
    なんせログの名前の付け方が違うので、それがどうにもなりません。
    でも、前日一日分だけでも結構楽しめます。
    たぶん検索エンジンからやってきたのだろうと思いますが、
    かなり古い記事が読まれたりしていて驚きます。

    返信削除
  2. はじめまして。急な質問ですいません。
    CGIかなり初心者です。初心者というよりまったく分かりません。上の解説を見てもまったくチンプンカンプンです。
    そんなド素人の僕が記事別ランキングを作るのは無理なのでしょうか??
    やはりコツコツ勉強しなきゃいけないでしょうか?
    ご返答の程よろしくお願いいたします。

    返信削除
  3. >>2 なお さん
    私もプログラムの中身はよく分かりません。でも、設定する個所さえ間違えなければ設置はそれほど難しくはないと思います。
    ただ、サイトを拝見させていただきましたがブログではないようですね。上に書いたランキングを作るプラグインはMovable Type専用のものです。普通のホームページでは利用できません。
    それとランキングを定期的に自動更新したい場合はcronというものを使わなければなりません。それはサーバーによりますので管理者の方に訊いてみて下さい。

    返信削除