MovableTypeのパンくずナビが意外に難しい件

September 23, 2008

最近、MovableTypeをブログツールではなく、CMSツールとして扱うカスタマイズ案件が結構多くやっていまして、それなりにノウハウが溜まってきましたので、少しずつですが、アウトプットしていきます。

今回は、パンくずナビ(パン屑リスト?)の制作です。

MovableTypeですが、意外にもパンくずナビが標準の装備で実装されていません。その為、タグを駆使して作る必要があるのですが、これが意外にややこしかったりします。

ということで、MovableTypeのパンくずナビの制作のコツをメモっておきます。一応SEO的にも意識した作りにしておきます。

先日のFWW_サイト運営・管理研究会(仮)で、nishiaki氏が提案されていた内容を頭の片隅に置きながら、制作したいと思います。

念の為、nishiaki氏の提言(間違ってたらツッコんで下さい>nishiaki氏)

「SEO、SEOいわんで〜」より抜粋

なんとなくポイント3より

  • パンくずの現在地にstrong

+その後のディスカッションで出た話

  • パンくずの最後と、<title>タグの内容と、ページタイトル(<h1>タグ辺り)の文言は一致させるべき

実践

参照元

仕様は、「小粋空間」さんと同じ仕様です。

一般的な,現在地にはアンカータグが入らないタイプです。こんな感じです。さらに、nishiaki氏をお話を参考に、現在地に<strong>タグを入れます。

HOME > カテゴリー1 > サブカテゴリー2

逆に、現在地にもアンカータグが入っていいタイプだと、そう苦労することはありません。

普通に

<a href="<$MTBlogURL$>">HOME</a> &gt; <MTParentCategories glue=" &gt; ">
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>';
<MTElse><$MTCategoryLabel$></MTElse></MTIfNonZero>
</MTParentCategories>

 こんな感じに書けば出来ます。(カテゴリーアーカイブ)

 

現 在地にアンカータグを入れるタイプですが、小粋空間さんのソースだと、なぜか、うまくいきません。色々原因も探ったのですが,分かったことは ArchiveTitleとCategoryTitleが同じなってしまうということぐらいでした。MT3系とMT4系で仕様変更があったのかもしれませ ん。

 

なので、小粋空間さんのソースを少し手を加えて(MTのPHP化が絶対条件)

<mt:SetVarBlock name="archive_title"><$mt:ArchiveTitle$></mt:SetVarBlock> <ul id="crumbs-navi">
<li><a href="<$mt:BlogURL$>">HOME</a> &gt; </li><mt:ParentCategories glue=" &gt; </li>">
<mt:IfNonZero tag="MTCategoryCount">
<?php
if('<$mt:GetVar name="archive_title"$>' != '<$mt:CategoryLabel$>'){
echo '<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a>';
}else{
echo '<li><strong><$mt:CategoryLabel$></strong></li>';
}
?>
<mt:Else>
<li><strong><$mt:CategoryLabel$></strong></li>
</mt:Else></mt:IfNonZero> </mt:ParentCategories>
</ul>

 

特に手を加えたのは、6行目辺りです。

<$MTCategoryLabel encode_php="q"$>' != '<$MTArchiveTitle encode_php="q"$>

小粋空間さんのように、これをやっちゃうと、MT4ではCategoryLabelとArchiveTitleが必ずおなじになってしまうため、この値が常にfalseになってしまいます。

そこで、1行目でそのページのArchiveTitleを任意の変数(ここではarchive_title)に入れます。

その上で、CategoryLabelとの整合性を計った上で、true(つまり現在地)なら、アンカー無し+SEOに配慮した<strong>タグを挿入。falseならアンカー付きで出力します。

若干ややこしいのですが、これで一応らしいパンくずナビが出来ると思います。

 

余談

あとこれはアクセスビリティ的な余談なんですが、パンくずナビって上部に有るのも重要だけど、記事の最後に合った方が使い易く無いかな?って話。

上部のパンくずは記事が、自分の思った記事じゃなかった時に使うことが多く、それも必要なんだけど、下部のパンくずは記事を読んでくれた人へ向けのもので、それも便利だと思います。

といってもここは、ブログなので、付けませんが。。。

そもそも、ブログにはパンくずナビあまり必要じゃ無いかなって話。(言い訳)