【MovableType】AWStats を使って人気記事ランキングを作る


MT で人気記事ランキングを作るとすると MT-MostVisited プラグインを使うのが一般的だ。

MTで人気記事ランキングを作る - #BLOG
http://www.masahiko.info/blog/archives/000100.html

このプラグインは Apache のログから直接統計データを得て作成するものだが、次のような欠点がある。

  1. ログファイルが大容量になると時間がかかりすぎる。
  2. URL に entry_id を使うことを想定しているので、(このブログのように)URL をカスタマイズしているとうまくデータを拾えない。

これを解決するために MostVisitedAlternative プラグインというのを自作してみた。このサイトの左に見えているランキングがそれだ。

1. は、ランキングを作る度にログファイル全体を走査していることが原因だ。これを解決するために AWStats を使い、予め Apache のログを解析した上で、そのデータを利用する形にする。2. は Permalink と entry_id の組(ハッシュ)を作っておき、それを参照してリンクを作ることで解決する。

ただ、MostVisitedAlternative プラグインには次の欠点が挙げられる。

  1. AWStats がないと使えない。
  2. 1 月ごとのデータしか得られない。

AWStats は月ごとの統計データを得るためのツールなので、~日や~週間と言った期間でランキングを作ることは出来ない。その代わり毎日更新することで、その月の朔日~今日までの統計を得ることは出来る。

では、早速プラグインの導入方法を書こう。

AWStats のインストール

これは以前に記事を書いたのでそちらを参照。→「AWStatsでちょっとリッチなアクセス解析 @ Mac OS X | blog.delphinus.dev

記事には Mac OS X での方法を書いたが、Linux や Windows でも問題なく動くはずだ。ここら辺を参照のこと。

tool/AWStats – Linux Tips
http://linux.mini13i.gotdns.org/?tool%2FAWStats

AWStats – グラフィカルなフリーのアクセスログ解析ソフト
http://www.perfectsky.net/awstats/index.html

MostVisitedAlternative プラグインのインストール

ではプラグイン本体をインストールする。次のファイルをダウンロードして解凍した後、出てきた MostVisitedAlternative ディレクトリを mt/plugins ディレクトリにコピーする。

ダウンロード → MostVisitedAlternative.zip

出来たら、MT を再起動してプラグインの設定画面を見てみよう。

100521-0001.png

設定項目は 2 つある。

設定ファイルへのパス

AWStats の設定ファイルをフルパスで指定する。これは AWStats のログファイルを含むディレクトリを検索するために使う。

解析を始める日

今月の統計データを使い始める日の閾値を指定する。初期値の「10」の場合、次のような設定になる。月の初めはまだサンプル数が少ないため、先月のデータを使うわけだ。

ランキングを作成する日 使うデータ
4 月 11 日~ 5 月 10 日 4 月分
5 月 11 日~ 6 月 10 日 5 月分

これでインストールと設定は完了だ。次は実際の使い方を説明する。

MostVisitedAlternative プラグインの使い方

例として、サイドバーウィジェットを使う方法を解説する。メニューから「デザイン」→「ウィジェット」とクリックして「ブログウィジェットの管理」画面を出す。

100521-0003.png

画面真ん中の「ウィジェットテンプレートの作成」をクリックし、次の内容で作成する。

<dt><$mt:MostVisitedMonth$> 月の人気記事</dt>
<dd class="popularEntries">
    <ul>
<mt:MostVisited>
        <li>
            <a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$>
            <span class="count">
                <$mt:MostVisitedCount$> Hits
            </span>
            <span class="date">
                <$mt:EntryDate format="%B %e, %Y"$>
            </span></a>
        </li>
</mt:MostVisited>
    </ul>
</dd>

100521-0004.png

「ブログウィジェットの管理」画面に戻り、ウィジェットセットに今作ったウィジェットを追加する。ウィジェットセットの名前は MT のテーマによって異なるだろう。

100521-0005.png
100521-0002.png

この状態で再構築すると右のような出力が得られる。

プラグインで定義しているタグは MT-MostVisited 由来のものとほぼ一緒だ。


<MTMostVisited count="xx">~</MTMostVisited>
他のタグを中に含み、ランキング上位より指定した数だけ繰り返す。数の指定は count プロパティで行い、省略すると「10」を使う。(つまり、1 位~ 10 位を表示する。)
<$MTMostVisitedCount$>
記事の閲覧回数を返す。
<$MTMostVisitedLink$>
記事への URL を返す。これは <$MTEntryPermalink$> と同じものである。
<$MTMostVisitedRank$>
一色氏による改造由来のタグ。順位を返す。
<$MTMostVisitedYear$>(追加)
このプラグインで追加したタグ。統計データの「年」を表す。<$MTMostVisited$> ループの外でも使用可能。
<$MTMostVisitedMonth$>(追加)
このプラグインで追加したタグ。統計データの「月」を表す。<$MTMostVisited$> ループの外でも使用可能。
<$MTEntryXXX$>
MT 本来のタグ。<$MTEntryTitle$><$MTEntryDate$> 等、(多分)全て使える。

後は MT 上で再構築する度に、AWStats のログを調べてランキングを作ってくれ
る。以前の記事等を参考にして AWStats を定期的に更新し、それに併せて mt-rebuild解説記事)を連動して動かすようにすれば、いつも最新のランキングが得られるだろう。

コメントを残す