コンテキストをはずすプラグイン

先日の「今後のMTへの要望(その8・テンプレートタグ関連)」の記事で、「コンテキストをはずすテンプレートタグが欲しい」ということを書きました。
その処理は簡単にできるので、プラグイン化してみました。

インストール

プラグインは以下からダウンロードすることができます。

ForceIndexContext_1_00.zip

ダウンロードしたZipファイルを解凍すると、「plugins」というフォルダができます。
このフォルダを、Movable Typeのインストール先ディレクトリにアップロードします。

MTForceIndexContextタグ

このプラグインをインストールすると、「MTForceIndexContext」というテンプレートタグ(ブロックタグ)が追加されます。
このタグのブロックの中は、インデックステンプレートのコンテキストとして動作します。

例えば、ブログに以下のようなウィジェットを作るとします。
すると、MTForceIndexContextタグの内部は常にインデックステンプレートのコンテキストなので、どのテンプレートにウィジェットを組み込んでも、ブログ全体での最近のコメントを出力することができます。

<mt:If tag="BlogCommentCount">
<mt:ForceIndexContext>
    <mt:Comments lastn="10" sort_order="descend">
        <mt:CommentsHeader>
<div class="widget-recent-comments widget">
    <h3 class="widget-header">最近のコメント</h3>
    <div class="widget-content">
        <ul>
        </mt:CommentsHeader>
            <li><strong><$mt:CommentAuthor$>:</strong> <$mt:CommentBody remove_html="1" words="10"$> <a href="<$mt:CommentLink$>" title="<mt:CommentEntry><$mt:EntryTitle$></mt:CommentEntry>へのコメント">続きを読む</a></li>
        <mt:CommentsFooter>
        </ul>
    </div>
</div>
        </mt:CommentsFooter>
    </mt:Comments>
</mt:ForceIndexContext>
</mt:If>

キャッシュとの併用

このプラグインを使うことで、ブログの全ページに最近のコメント/トラックバック/ブログ記事等の一覧を入れやすくなります。
ただ、それらの部分を何度も再構築すると、再構築に時間がかかるようになります。

最近のコメント等を出力する部分は、テンプレートモジュールかウィジェットにして、Movable Typeのキャッシュ機能と併用することをお勧めします。

IndexContextプラグインとの違い

コンテキストをはずすプラグインとして、シックス・アパートの澤田氏が作られた「IndexContext」というプラグインもあります。
表面的な動作は、拙作のプラグインとIndexContextプラグインとで、ほぼ同じです。

ただし、変数の扱いが異なります。
澤田氏のIndexContextプラグインでは、MTIndexContextタグの内部では、その外で定義された変数がすべてクリアされるようになっています。
一方、拙作のプラグインでは、MTForceIndexContextタグの内部でも、その外で定義された変数はクリアされません。
そのため、変数にからむ処理を行った場合、IndexContextプラグインと拙作のプラグインとで、動作が異なることがあり得ます。

IndexContextプラグインと、拙作のプラグインとは、共存できるはずです。
必要であれば、両方インストールしておいて、状況に応じて使い分けると良いでしょう。

githubでも公開

このプラグインは、試験的にgithubでも公開しています。
リポジトリのアドレスは以下の通りです。

http://github.com/hjfuji/ForceIndexContext