時間帯ごとのエントリー等の数をカウントするプラグイン

時間帯ごとに、エントリー/コメント/トラックバックの数をカウントして表示するプラグインを作ってみました。

ダウンロードとインストール

こちらのページを表示し、表示されたリストをメモ帳等に貼り付け、「TimeCount.pl」というファイル名で保存して、Movable Typeの「plugins」ディレクトリにアップロードします。
このプラグインをインストールすると、「MTTimeCountContainer」「MTTimeCount」「MTTimeCountPercent」「MTTimeCountPerMax」「MTTimeCountStartTime」「MTTimeCountEndTime」のタグが追加されます。

MTTimeCountContainerタグ

カウントを行うためのコンテナタグです。書き方は以下の通りです。

<MTTimeCountContainer mode="w" lastn="x" days="y" split="z">
<MTTimeCount系のタグ>
</MTTimeCountContainer>

・「mode="w"」
カウントする対象を指定します。「mode="entry"」にすると、エントリーを時間帯ごとにカウントします。同様に、「mode="comment"」でコメント数のカウントになり、「mode="trackback"」でトラックバックのカウントになります。
このアトリビュートを省略すると、エントリーを時間帯ごとにカウントします。

・「lastn="x"」
最近x件のエントリー等だけをカウントの対象にする際に指定します。

・「days="y"」
最近y日のエントリー等だけをカウントの対象にする際に指定します。ただし、「lastn="x"」が指定されている場合は、そちらが優先されます。
lastn/daysともに指定していない場合は、Blogのすべてのエントリー等がカウントの対象になります。

・「split="z"」
何分単位でカウントするかを指定します。例えば、「split="60"」とすると、1時間単位でカウントします。
splitを省略すると、60分単位でカウントします。

MTTimeCountタグ

個々の時間帯のエントリー等のカウントを表します。

MTTimeCountPercentタグ

すべてのエントリー等の数を1として、個々の時間帯のエントリー等の数の割合を表します。例えば、全部でエントリーが100個あり、ある時間帯のエントリーが20個だと、このタグの値は0.2(=20÷100)になります。
また、「mult="倍率"」のアトリビュートをつけると、指定した倍率が結果に掛け算されます。例えば、「mult="100"」とすると、結果が100倍されます。
なお、小数点以下は特に処理しません。小数点以下の桁数を指定したい場合は、Movable Type標準のsprintfアトリビュートをご利用ください。

MTTimeCountPerMaxタグ

もっともエントリー等の多い時間帯を1として、個々の時間帯のエントリー等の数の割合を表します。例えば、もっともエントリーが多い時間帯にはエントリーが50個あり、ある時間帯のエントリーが20個だと、このタグの値は0.4(=20÷50)になります。
MTTimeCountPercentタグと同様に、「mult="倍率"」のアトリビュートも使用できます。また、「sprintf」アトリビュートとも組み合わせることができます。

MTTimeCountStartTimeタグ

時間帯の先頭の時刻を表す日付タグです。書式を指定したい場合は、Movable Type標準の「format」アトリビュートと組み合わせてお使いください。

MTTimeCountEndTimeタグ

時間帯の最後の時刻を表す日付タグです。書式を指定したい場合は、Movable Type標準の「format」アトリビュートと組み合わせてお使いください。

使用例

以下のリストは、1時間単位のエントリー数を、棒グラフ形式で表示するためのものです。
実際の表示例はこちらにあります。

<table border="1" cellspacing="0" cellpadding="0">
<MTTimeCountContainer mode="entry" split="60">
<tr>
<td><$MTTimeCountStartTime format="%H:%M"$>-<$MTTimeCountEndTime format="%H:%M"$></td>
<td><MTIfNonZero tag="MTTimeCount"><img src="<$MTBlogURL$>pic/1dotbar.gif" width="<$MTTimeCountPerMax mult="300"$>" height="15"> </MTIfNonZero><$MTTimeCount$>(<$MTTimeCountPercent mult="100" sprintf="%.1f"$>%)</td>
</tr>
</MTTimeCountContainer>
</table>