MTでのパンくずリスト

MTネタ連発ですが、今回はMTでのパンくずリストを考えてみました。

カテゴリーアーカイブで表示するパンくずリストで、親カテゴリを含めてリストアップしてエントリーの無いカテゴリーに関してはカテゴリーアーカイブへのリンクは入れず、今表示しているカテゴリーのリンクも入れないと言うもの。

MTのソースコード

<div class="topicPath">
<mt:SetVarBlock name="this_category"><$mt:CategoryLabel$></mt:SetVarBlock>
<ul>
<li><a href="<$mt:BlogURL$>">Home</a></li>
<mt:ParentCategories>
<mt:SetVarBlock name="category_list"><$mt:CategoryLabel$></mt:SetVarBlock>
<mt:If name="category_list" ne="$this_category">
<mt:IfNonZero tag="CategoryCount">
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></li>
<mt:Else>
<li><$mt:CategoryLabel$></li>
</mt:IfNonZero>
<mt:Else>
<li class="noImage"><em><$mt:CategoryLabel$></em></li>
</mt:If>
</mt:ParentCategories>
</ul>
</div>
  • 2行目のSetVarBlockで現在のカテゴリーをthis_categoryに入れます
  • 5行目のParentCategoriesで現在のカテゴリーから親カテゴリーまでをリストアップし、6行目のSetVarBlockでリストアップしたカテゴリーを全てcategory_listに入れます。
  • 7行目のIfで現在表示中のカテゴリーと比較します。現在のカテゴリー以外でエントリー数がゼロでない場合は9行目が実行されます。
  • 現在のカテゴリー以外でエントリー数がゼロだった場合は11行目が実行されます。
  • 現在のカテゴリーだった場合は14行目が実行されます。

もっと簡単な書き方があるかもしれませんが参考までエントリーしておきます。

ついでにCSSコード

div.topicPath ul li {
	margin-right: 7px;
	padding-right: 14px;
	float: left;
	background: url(<$mt:StaticWebPath$>themes/theme_name/img/marker_topicpath.gif) no-repeat right center;
	list-style: none;
	display: inline;
}
ul li.noImage { background: none; }