一部のタグのランキングを出力する

MTQに、「一部のタグについて、そのタグが付いている記事数のランキングを出力したい」というような質問がありました。
Movable Typeの標準のテンプレートタグでもできなくはありませんが、タグが増えるにつれて再構築のパフォーマンスが悪化する問題が生じます。
そこで、拙作のSQLToolsプラグインを利用して、一部のタグのランキングを出力する方法を紹介します。

1.SQLToolsプラグインのインストール

まず、拙作のSQLToolsプラグインをインストールします。
手順は「SQLToolsプラグイン(その1・概要とインストール)」の記事をご参照ください。

2.SQLの入力

次に、集計対象のブログ(またはウェブサイト)の管理画面に入り、「SQLクエリ」→「新規」のメニューを選んで、SQLを新規作成する状態にします。
「SQLクエリの名前」の欄に「記事毎のタグ数」と入力した後、「SQLクエリ」の欄に以下のSQLを入力します。
そして、「変更を保存」ボタンをクリックして、このSQLを保存します。

SELECT tag_name, COUNT(*) AS cnt
FROM mt_objecttag, mt_tag, mt_entry
WHERE objecttag_tag_id = tag_id
AND objecttag_blog_id =<$mt:BlogID$>
AND objecttag_object_datasource = 'entry'
AND objecttag_object_id = entry_id
AND entry_class = 'entry'
AND entry_status = 2
AND tag_name in (?)
GROUP BY tag_name
ORDER BY cnt DESC

3.集計結果の出力

次に、集計結果を出力するように、テンプレートを書き換えます。
対象のテンプレートを編集する状態にして、ランキングを出力する位置に、以下のようなタグを入れます。
「タグ1」「タグ2」・・・「タグn」は、集計したいタグに置き換えます。

<mt:SetVar name="tag_names" function="push" value="タグ1"$>
<mt:SetVar name="tag_names" function="push" value="タグ2"$>
・・・
<mt:SetVar name="tag_names" function="push" value="タグn"$>
<mt:SQLRows name="記事毎のタグ数" placeholders="$tag_names">
  <mt:SQLRowsHeader><ul></mt:SQLRowsHeader>
  <li><$mt:SQLColumn column="tag_name"$>, <$mt:SQLColumn column="cnt"$></li>
  <mt:SQLRowsFooter></ul></mt:SQLRowsFooter>
</mt:SQLRows>
<ul>

「<mt:SQLColumn column="tag_name"$>」がタグ名を表し、「<$mt:SQLColumn column="cnt"$>」が個々のタグがついた記事の数を表します。