パンくずリストを変更し、モジュールテンプレートとして設定しました

パンくずリストが各アーカイブテンプレートに付いている。

とはいっても、あまり機能的なパンくずリストではない。

■「カテゴリ別ブログ記事リスト」のパンくずリスト↓

カテゴリ別ブログ記事のパンくずリスト

以下のコードで出力されている。


<ul class="breadcrumb">
<li><a href="<$mt:BlogURL encode_html="1"$>">ホーム</a></li>
<li><a href="<$mt:Link template="main_index" encode_html="1"$>">ブログ</a></li>
<li><$mt:ArchiveTitle$>アーカイブ</li>
</ul>


2つのリンク

  • [ホーム](トップページ)
  • [ブログ](デフォルト設定では、アーカイブテンプレートはこの[ブログ]以下の階層にできる。)

がダイレクトに書かれていて、次に[カテゴリ名+アーカイブ]が表示される。

このままだと、カテゴリの階層は表示されない。

■「ブログ記事」ののパンくずリスト↓

ブログ記事テンプレートのパンくずリスト

以下のコードで出力されている。


<ul class="breadcrumb">
<li><a href="<$mt:BlogURL encode_html="1"$>">ホーム</a></li>
<li><a href="<$mt:Link template="main_index" encode_html="1"$>">ブログ</a></li>
<li><$mt:EntryTitle$></li>
</ul>


これも同じように、ブログ記事のタイトルだけが変数で出力されているだけで、どのカテゴリに所属しているかわからない。

カテゴリを中心とした階層構造のパンくずリストにするために、今までのMTで採用されているパンくずカスタマイズを参考に、リストタグとCSSをそのまま利用したパンくずリストにカスタマイズした。

パンくずリストは、各アーカイブテンプレートの直接書かれていたので、共通モジュールとして設定することにした。

1.各パンくずリストのコード部分を、<$mt:Include module="Pankuzu"$>に差し替え。
 (モジュール名はなんでも)

2.「Pankuzu」テンプレートモジュールを作成

基本的には、各アーカイブ毎に分岐させる。
今回は、4つのアーカイブのみの設定。
テンプレートの種類によって追加することができる。

条件分岐は、ブログ記事、カテゴリ別ブログ記事、年別ブログ記事、ウェブページの順。


<ul class="breadcrumb">
<li><a href="<$mt:BlogURL$>">ホーム</a></li>
<mt:if name="entry_template">
<mt:ParentCategories>
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
</mt:ParentCategories>
<li><$mt:EntryTitle$></li>
</mt:If>
<mt:if name="category_archive">
<$mt:CategoryID setvar="cat_id"$>
<mt:ParentCategories>
<$mt:CategoryID setvar="current_cat_id"$>
<mt:if name="current_cat_id" eq="$cat_id">
<li><$mt:CategoryLabel$></li>
<mt:else>
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
</mt:if>
</mt:ParentCategories>
</mt:If>
<mt:if name="datebased_only_archive">
<li><$mt:ArchiveTitle$>アーカイブ</li>
</mt:If>
<mt:if name="page_archive">
<li><$mt:PageTitle$></li>
</mt:If>
</ul>


これでカテゴリを中心としたパンくずが表示される。
ウェブページもフォルダ階層のパンくずにしたい場合は、さらに設定が必要だが今回は行っていない。

■変更後の「カテゴリ別ブログ記事リスト」のパンくずリスト↓

変更後の「カテゴリ別ブログ記事リスト」のパンくずリスト

■変更後の「ブログ記事」のパンくずリスト↓

変更後の「ブログ記事」のパンくずリスト↓各テンプレート毎のパンくずを採用する場合は、各テンプレートで設定された予約変数でIF分岐を行う。
予約変数の一覧は、「アーカイブテンプレートに設定される予約変数」Movabletype.jpを参考に。