【Movable Type】カテゴリ用のパンくずリスト

MTタグ

<div id="breadcrumb">
  <ul class="clearfix wide">
  <li><a href="/">TOP</a></li>
  <li>></li>
  <MTSetVarBlock name="cat_current"><$MTCategoryID$></MTSetVarBlock> ←【1】
  <MTParentCategories> ←【2】
  <MTSetVarBlock name="cat_me"><$MTCategoryID$></MTSetVarBlock> ←【3】
  <li><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel remove_html="1"$></a></li>
  <MTIf name="cat_current" eq="$cat_me"><MTElse><li>></li></MTElse></MTIf> ←【4】
  </MTParentCategories>
  </ul>
 </div>

解説

【1】開いている現在のカテゴリのIDを取得する

ループを回す前に現在のカテゴリのIDを取得しておきます。IDは絶対にかぶらないのでオススメです。

【2】MTParentCategoriesタグで親カテゴリを全て取得する

MTParentCategoriesは自分(カテゴリ)を含む親カテゴリ(TopLevelまで全部取得できます)を取得できます。

【3】それぞれのカテゴリIDを取得

MTParentCategoriesでループを回すときに一緒にカテゴリのIDも取得しておきます。

【4】自分以外の時のみ、「>」を表示するように指定

一番最初に取得したIDとループ中のIDをIfで比較し、一致しない時のみ「>」を表示するようにしています。
変数と変数を比較するときには、nameはそのまま変数名のみ、valueの方は「$変数名」とする必要があります。

最後に

2つもSetVarを使って比較しなくても、ループ内の記述を「 > カテゴリ名 」とするだけで平気だったりしますが、簡単なループと自分との比較方法のメモとしてあえて使っています。