【Movable Type】カテゴリに属していない記事の一覧を出力する方法
MTで記事を作成する際にすべての記事がカテゴリに属しているとは限りません。
カテゴリに属している記事と属していない記事で表示を変えたいという場合もあるかと思いますがそんなときのメモです。
MTEntryCategory
カテゴリに属している記事と属していない記事は、記事のメインカテゴリを表示するMTEntryCategoryというタグを使用してmt:Ifで以下のように分岐することができます。
<mt:If tag="EntryCategory">
カテゴリに属する記事の場合
<mt:Else>
カテゴリに属さない記事の場合
</mt:If>
カテゴリに属していない記事の一覧を出力する
例えばブログトップに上のようなイメージでカテゴリに属している記事とカテゴリに属していない記事(その他の記事)を表示するには以下のようにします。
<ul>
<mt:TopLevelCategories>
<li>
<dl>
<dt><a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a></dt>
<dd>
<mt:Entries>
<mt:EntriesHeader>
<ul>
</mt:EntriesHeader>
<li><a href="<mt:EntryPermalink>"><mt:EntryTitle></a></li>
<mt:EntriesFooter>
</ul>
</mt:EntriesFooter>
</mt:Entries>
</dd>
</dl>
</li>
</mt:TopLevelCategories>
<mt:Entries>
<mt:If tag="EntryCategory">
<mt:Else><mt:Ignore>カテゴリに属していない記事</mt:Ignore>
<mt:EntriesHeader>
<li>
<dl>
<dt>その他</dt>
<dd>
<ul>
</mt:EntriesHeader>
<li><a href="<mt:EntryPermalink>"><mt:EntryTitle></a></li>
<mt:EntriesFooter>
</ul>
</dd>
</dl>
</li>
</mt:EntriesFooter>
</mt:If>
</mt:Entries>
</ul>
前半のmt:TopLevelCategories内はカテゴリに属している場合の処理で、後半のmt:Entries内でmt:If tag=”EntryCategory”を使用してカテゴリに属していない記事の一覧を生成しています。
カテゴリに属している記事が一つもない場合はリスト自体を生成しないようにmt:EntriesHeaderとmt:EntriesFooterで囲っておきます。
mt:Ifの逆であり条件を満たさなかった場合に実行するmt:Unlessで以下のようにするとmt:EntriesHeaderとmt:EntriesFooterが意図したように動作しないので注意が必要です。
<mt:Entries>
<mt:Unless tag="EntryCategory">
カテゴリに属さない場合の処理
</mt:Unless>
</mt:Entries>
おしまい。