Movable Type 4.X系を使い始めると、サイドバーのアイテム(ウィジェット)はウィジェットリストで管理することになるのですが、その中に「最新のブログ記事」というウィジェットがあります。このウィジェットはとてもシンプルなものでMTEntriesで最新の10件を並べるものです。

ただ、MTEntriesはテンプレートのコンテキスト(文脈)によって振る舞いを変えます。トップページ(メインページ・テンプレート)では純粋に「最新の」n件の記事がリストアップされるのですが、カテゴリーアーカイブページ(カテゴリ別ブログ記事リスト・テンプレート)ではそのカテゴリ内の記事で最新のn件の記事。月別アーカイブページ(月別ブログ記事リスト・テンプレート)ではその月に書かれた記事の最新n件(後ろから数えてn件)の記事がリストアップされます。

この挙動は、他のブログサービスなどからMovable Typeに乗り換えた人から見ると、不自然なものに映ると思います。それだけではなく、カテゴリアーカイブページ・月別アーカイブページでも共通のタイトル「最新の記事」と表示されるのは「気持ち悪い」と思います。

僕はとりあえず、

<h3 class="widget-header">
    <mt:if name="archive_listing">
        <mt:if name="datebased_monthly_archive">
            <$MTArchiveTitle$>の記事
        </mt:if>
        <mt:if name="category_archive">
            カテゴリー「<$MTArchiveTitle$>」の最近の記事
        </mt:if>
    <mt:else>
        最新のブログ記事
    </mt:if>
</h3>

このように条件分岐をさせてやって、各テンプレートでのタイトルの表示を弄っていました。こうすると例えばカテゴリ:Movable Typeのアーカイブページでは「カテゴリー「Movable Type」の最近の記事」と表示され、2008年10月のアーカイブページでは「2008年10月の記事」といったタイトルで表示されます。

だけど根本的な解決になってないよなあ、と情報を集めていたら、テンプレートのコンテキスト(文脈)に関わらず、「最新の」記事n件をMTEntriesにリストアップされる方法を2個見つけました。

1)「最新のブログ記事」のカスタムインデックステンプレートを作成し、それをウィジェットにIncludeさせる方法

小粋空間: MTInclude タグによる SSI(サーバサイドインクルード)不要なインデックステンプレートのモジュール化

小粋空間さんで詳しく解説されています。

2)IndexContextプラグインを用いる方法

IndexContext - blog.aklaswad.com

aklaswadさんによるプラグイン、IndexContextを用います

2)の方法が手軽に見えたので、早速導入しました。IndexContextプラグインをインストールすると、新たにMTIndexContextタグが使用可能になります。このタグはコンテナ(ブロック)タグであり、「一時的にテンプレートのコンテキストをインデックステンプレートと同じ振る舞いにするコンテナタグ」です。

つまり<MTEntries>~</MTEntries>の部分をこのコンテナタグで囲むと、カテゴリ別ブログ記事リストテンプレートにおいても、月別ブログ記事リストテンプレートにおいても、インデックステンプレート(メインページテンプレート)のそれと同じように、「最新の」n件の記事がリストアップされます。Movable Type 4.2でも動作を確認しました。探していたと言う方は是非試してみてください。

Tweetbacks

No Tweets Found About This Entry.

Leave Your Words




Trackback URL