パンくずリスト
「パンくずリスト」とは、現在表示しているページ位置を、上位(通常トップページ)からの階層構造で表わすもので、童話「ヘンゼルとグレーテル」で、森の中で迷わないよう目印としてパンくずを落としながら歩いたということから命名されたようです。当サイトでもトップページを除いた全てのページの中央カラム上部に表示しています。
ということで、Movable Typeでのカスタマイズ方法をご紹介します。
1.仕様
ここで紹介するパンくずリストは下記の仕様となっています(大袈裟ですが)。
- トップページをリンク表示します
- 現在のページタイトルをテキストで表示します
- 階層途中のカテゴリーにエントリーが存在する場合、該当のカテゴリーをリンク表示にします
- 階層途中のカテゴリーにエントリーが存在しない場合、該当のカテゴリーをテキスト表示にします
また、個別エントリーアーカイブは必ずあるひとつのカテゴリーに属していることが前提となります。Movable Type はサブカテゴリーをサポートしているので、階層構造を表示するアーカイブとしてはカテゴリーアーカイブ、および個別エントリーアーカイブがより適しているでしょう。
2.カテゴリーアーカイブに追加する
パンくずリストとなる、下記のリストをカテゴリーアーカイブの任意の位置に貼り付けてください。
<a href="<$MTBlogURL$>">Top</a> > <MTParentCategories glue=" > ">
<MTIfNonZero tag="MTCategoryCount">
<?php
if ('<$MTCategoryLabel encode_php="q"$>' != '<$MTArchiveTitle encode_php="q"$>') {
print '<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel encode_php="q"$></a>';
} else {
print '<$MTCategoryLabel encode_php="q"$>';
}
?>
<MTElse><$MTCategoryLabel$></MTElse></MTIfNonZero>
</MTParentCategories>
いくつかのサイトを参考にさせて頂きまして、カテゴリーアーカイブのパンくずリストにはMTタグとPHPを併用することにしました(MTタグだけでは仕様を満足できないため)。したがってカテゴリーアーカイブファイルの拡張子が .php になっていることが前提となります。PHPへの変更方法はPHPモジュール化の仕組みについて(その3:変更方法)の1.2項を参照ください。
リストの具体的な動作は、まず <MTParentCategories> ? </MTParentCategories> で現在のカテゴリー(カレントカテゴリー)を含めた全ての親カテゴリーを順番に表示します。glue 属性には区切り文字を設定します。ここでは「>(「>」)」とその前後に半角空白を設定していますが、他の文字に変更されても問題ありません。なお MTParentCategories の他のオプションとして exclude_current 属性があり、これを用いることでカレントカテゴリーを含めない表示も可能です。
MTParentCategories タグで括られた中では、カレントカテゴリーがアーカイブタイトルと等しいか、あるいはカテゴリーにエントリーが存在しない場合、テキスト表示にし、それ以外の場合はリンク表示にする処理を行っています。
前述の glue 属性以外で一ヶ所現れる「>」 はトップページと最上位カテゴリーの区切り文字として用いています。
3.個別エントリーアーカイブに追加する
下記のリストを個別エントリーアーカイブテンプレートの任意の位置に貼り付けてください。
<a href="<$MTBlogURL$>">Top</a> >
<MTParentCategories glue=" > ">
<MTIfNonZero tag="MTCategoryCount">
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
<MTElse><$MTCategoryLabel$></MTElse>
</MTIfNonZero>
</MTParentCategories>
> <$MTEntryTitle$>
構造はカテゴリーアーカイブのパンくずリストに似ていますが、階層表示の最後はエントリーのタイトルになります。つまりカテゴリーアーカイブのように最後の階層をテキスト表示にするための判定が不要なため、MTタグのみで構成しています。
エントリーが存在しないカテゴリーをテキスト表示にするという振る舞いはカテゴリーアーカイブと同様です。
4.日付アーカイブに追加する
下記のリストを日付アーカイブテンプレートの任意の位置に貼り付けてください。トップページから1階層しかないため、簡素な構成です。
<a href="<$MTBlogURL$>">Top</a> > <$MTArchiveTitle$>
以上です。
参考サイトは下記です。ありがとうございました。
The Blog of H.Fujimoto:エントリーのカテゴリーをトップレベルから順に表示する
hxxk.jp:サブカテゴリとパンくずリスト/サブカテゴリとパンくずリスト (2)
やむやむ:個別エントリにパンくずナビ