Top > Movable Type > カスタマイズ > パンくずリスト [全て開く]
2011年5月25日

Movable Typeのパンくずリストでフォルダの代わりにウェブページを表示する

May 25,2011 2:00 AM
Tag:[, , ]
Permalink

Movable Typeのウェブページのパンくずリストで、フォルダの代わりにウェブページを表示するカスタマイズを紹介します。

変更前
完成イメージ

変更後
完成イメージ

上記のサンプルで使っているウェブページとフォルダの関係は次の通りです。

ウェブページタイトル属するフォルダ
親ウェブぺージ親フォルダ
子ウェブぺージ子フォルダ
孫ウェブぺージ孫フォルダ

フォルダの階層は次の通りです。

親フォルダ
 └ 子フォルダ
   └ 孫フォルダ

1.カスタマイズ

次のサブテンプレートをウェブページテンプレートの任意の位置に設定します。

<$mt:FolderLabel setvar="folder"$>
<a href="<$mt:BlogURL$>">TOP</a> ≫
<mt:ParentFolders>
  <$mt:FolderLabel setvar="current_folder">
  <mt:if name="folder" ne="$current_folder">
    <mt:Pages folder="$current_folder" include_subfolders="0">
<a href="<$mt:PagePermalink$>"><$mt:PageTitle$></a> ≫
    </mt:Pages>
  </mt:if>
</mt:ParentFolders>
<$mt:PageTitle$>

1行目で再構築中のウェブページのフォルダを変数folderに保存します。3行目でウェブページが属するフォルダの親フォルダから現在のフォルダまで処理を繰り返します。

4行目のMTFolderLabelタグで繰り返し処理の中のフォルダを変数current_folderに保存し、1行目で保存した変数folderと比較して、等しくない場合、つまり自フォルダでない場合のみMTifタグの中を実行します。

6行目のMTPagesタグにはfolderモディファイアで処理するフォルダを限定し、さらにinclude_subfoldersモディファイアでサブフォルダを処理しないように設定します。これで処理中のフォルダに属するウェブページの情報を出力します。

2.パンくずリストにフォルダを表示するサブテンプレート

参考までに、冒頭画面の変更前の、パンくずリストにフォルダを表示するサブテンプレートも掲載しておきます。

<mt:if tag="PageBaseName" eq="index">
<$mt:SetVar name="exclude_current" value="1"$>
<mt:else>
<$mt:SetVar name="exclude_current" value="0"$>
</mt:if>
<a href="<$mt:BlogURL$>">TOP</a> ≫
<mt:ParentFolders exclude_current="$exclude_current">
<a href="<$MTBlogURL$><$mt:FolderPath$>/"><$mt:FolderLabel></a> ≫
</mt:ParentFolders>
<$mt:PageTitle$>
Comments [0] | Trackbacks [0]
2005年9月13日

パンくずリスト

September 13,2005 12:25 AM
Tag:[, , , ]
Permalink

パンくずリスト「パンくずリスト」とは、現在表示しているページ位置を、上位(通常トップページ)からの階層構造で表わすもので、童話「ヘンゼルとグレーテル」で、森の中で迷わないよう目印としてパンくずを落としながら歩いたということから命名されたようです。当サイトでもトップページを除いた全てのページの中央カラム上部に表示しています。
ということで、Movable Typeでのカスタマイズ方法をご紹介します。

1.仕様

ここで紹介するパンくずリストは下記の仕様となっています(大袈裟ですが)。

  • トップページをリンク表示します
  • 現在のページタイトルをテキストで表示します
  • 階層途中のカテゴリーにエントリーが存在する場合、該当のカテゴリーをリンク表示にします
  • 階層途中のカテゴリーにエントリーが存在しない場合、該当のカテゴリーをテキスト表示にします

また、個別エントリーアーカイブは必ずあるひとつのカテゴリーに属していることが前提となります。Movable Type はサブカテゴリーをサポートしているので、階層構造を表示するアーカイブとしてはカテゴリーアーカイブ、および個別エントリーアーカイブがより適しているでしょう。

2.カテゴリーアーカイブに追加する

パンくずリストとなる、下記のリストをカテゴリーアーカイブの任意の位置に貼り付けてください。

<a href="<$MTBlogURL$>">Top</a> &#65310; <MTParentCategories glue=" &#65310; ">
<MTIfNonZero tag="MTCategoryCount">
<?php
if ('<$MTCategoryLabel encode_php="q"$>' != '<$MTArchiveTitle encode_php="q"$>') {
    print '<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel encode_php="q"$></a>';
} else {
    print '<$MTCategoryLabel encode_php="q"$>';
}
?>
<MTElse><$MTCategoryLabel$></MTElse></MTIfNonZero>
</MTParentCategories>

いくつかのサイトを参考にさせて頂きまして、カテゴリーアーカイブのパンくずリストにはMTタグとPHPを併用することにしました(MTタグだけでは仕様を満足できないため)。したがってカテゴリーアーカイブファイルの拡張子が .php になっていることが前提となります。PHPへの変更方法はPHPモジュール化の仕組みについて(その3:変更方法)の1.2項を参照ください。

リストの具体的な動作は、まず <MTParentCategories> ? </MTParentCategories> で現在のカテゴリー(カレントカテゴリー)を含めた全ての親カテゴリーを順番に表示します。glue 属性には区切り文字を設定します。ここでは「&#65310;(「>」)」とその前後に半角空白を設定していますが、他の文字に変更されても問題ありません。なお MTParentCategories の他のオプションとして exclude_current 属性があり、これを用いることでカレントカテゴリーを含めない表示も可能です。

MTParentCategories タグで括られた中では、カレントカテゴリーがアーカイブタイトルと等しいか、あるいはカテゴリーにエントリーが存在しない場合、テキスト表示にし、それ以外の場合はリンク表示にする処理を行っています。
前述の glue 属性以外で一ヶ所現れる「&#65310;」 はトップページと最上位カテゴリーの区切り文字として用いています。

3.個別エントリーアーカイブに追加する

下記のリストを個別エントリーアーカイブテンプレートの任意の位置に貼り付けてください。

<a href="<$MTBlogURL$>">Top</a> &#65310; 
<MTParentCategories glue=" &#65310; ">
<MTIfNonZero tag="MTCategoryCount">
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
<MTElse><$MTCategoryLabel$></MTElse>
</MTIfNonZero>
</MTParentCategories>
&#65310; <$MTEntryTitle$>

構造はカテゴリーアーカイブのパンくずリストに似ていますが、階層表示の最後はエントリーのタイトルになります。つまりカテゴリーアーカイブのように最後の階層をテキスト表示にするための判定が不要なため、MTタグのみで構成しています。
エントリーが存在しないカテゴリーをテキスト表示にするという振る舞いはカテゴリーアーカイブと同様です。

4.日付アーカイブに追加する

下記のリストを日付アーカイブテンプレートの任意の位置に貼り付けてください。トップページから1階層しかないため、簡素な構成です。

<a href="<$MTBlogURL$>">Top</a> &#65310; <$MTArchiveTitle$>

以上です。
参考サイトは下記です。ありがとうございました。

The Blog of H.Fujimotoエントリーのカテゴリーをトップレベルから順に表示する
hxxk.jpサブカテゴリとパンくずリストサブカテゴリとパンくずリスト (2)
やむやむ個別エントリにパンくずナビ

Comments [59] | Trackbacks [25]
Now loading...
Introduction
List of "パンくずリスト"
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.04