Movable Type におけるパンくずリストの自動生成

2009年6月3日 02:16

ページにパンくずリストを追加する際、各ページに手動で追加するのは面倒なので、
全テンプレート共通で使用できるものをテンプレートモジュールとして登録しておくと楽。
各ページに配置されたテンプレートモジュールは、
アーカイブテンプレートに設定される予約変数を判定し、
そのページに適したパンくずリストを自動生成してくれる。

コードはこんな感じ。

<div>
  <$mt:TemplateNote value="パンくず初期値"$>
  <mt:SetVarBlock name="pankuzu"><a href="<$mt:BlogURL$>">HOME</a></mt:SetVarBlock>

<$mt:TemplateNote value="カテゴリアーカイブリストの時"$>
  <mt:If name="category_archive">
  <mt:SetVarBlock name="pankuzu" append="1">><$mt:CategoryLabel$></mt:SetVarBlock>

<$mt:TemplateNote value="ブログ記事の時"$>
  <mt:ElseIf name="entry_archive">
  <mt:SetVarBlock name="pankuzu" append="1">><a href="<$mt:EntryLink archive_type="Category"$>"><$mt:EntryCategory$></a>><$mt:EntryTitle$></mt:SetVarBlock>

<$MTTemplateNote value="月別ブログ記事リストの時"$>
  <mt:ElseIf name="datebased_monthly_archive">
  <mt:SetVarBlock name="pankuzu" append="1">><$mt:ArchiveTitle$></mt:SetVarBlock>
  </mt:If>

<$mt:GetVar name="pankuzu"$>

</div>

この例だと、ブログ記事アーカイブ、カテゴリアーカイブリスト、月別ブログ記事アーカイブリストの
3テンプレートにテンプレートモジュールを追加して、再構築すれば OK。
下記のように出力される。


もし、上記以外のアーカイブリスト(例えば年別、ユーザ別など)もある場合は、
上記ソースに各々の場合の判定を追加してやればいい。

これを応用して、Title 部分にも「記事タイトル|カテゴリ名|サイト名」のように階層を持った形で表示することが出来る。

カテゴリー: cms タグ:

コメントはまだありません

No comments yet.

TrackBack URL

Leave a comment