2005-04-20 アーカイブ

http://hxxk.jp/2005/04/20/

サブカテゴリとパンくずリスト

記事データ

投稿者

望月真琴

投稿日時

2005-04-20T23:23+09:00

タグ
概要

Movable Type でパンくずリストを作るためのテンプレートの書き方を解説。

リプライ

4 件のリプライがあります。

記事本文

パンくずリストによる階層ナビゲーションを作る

まず、これから解説することに対する前提としてちょっと解説。

俗にパンくずリストと呼ばれるナビゲーションは、多くの場合サイトのトップページから現在のページまでのディレクトリ階層をそれぞれのディレクトリ毎にリンクを張って並べるものです。 これについては諸説あるかもしれませんが、それを論じることは今回の本論ではないのでまたいずれ。

今回の本論は、そのナビゲーションを Movable Type で効率よく作成する方法です。 パンくずリストを扱うなら、本当は link 要素の方でのナビゲーションも合わせて紹介したいところですが、今回は body 要素内でのナビゲーションのみを扱います。 MT 関連の質問スレッドあてに次のような質問が寄せられました。

MovableTypeでパンくずリストを作成したいのですが、1層目のサブカテゴリまでは何とか作ることができたのですが、2層目のサブカテゴリまで作成すると、パンくずリストが「ずれて」しまいます。

私がやりたかったのは、真琴さんの仰る通りのナビゲーションなんです。 しかし、その上で、個々のカテゴリへのリンクが張れるようにしたいのです。

私の考えるソース ver.1

<p>
<a href="<$MTBlogURL$>"><$MTBlogName$></a> &#62;
<MTParentCategories glue="&#62;" exclude_current="1"><a href="<$MTCategoryArchiveLink$>"><MTCategoryLabel></a>
</MTParentCategories>
&#62; <$MTArchiveTitle$>
</p>

ざっと考えてみましたが、こんな感じでどうでしょう ? このテンプレートで実際に展開される HTML は次のようになります。 なお、 http://hxxk.jp/mt/system/template/customize/ 上で展開したと仮定します。 カテゴリアーカイブ撤廃に伴い、現在はこのディレクトリは存在しません。

<p>
<a href="http://hxxk.jp/mt/">MT hxxks</a>
&#62; <a href="http://hxxk.jp/mt/system/index.php">system</a>
&#62; <a href="http://hxxk.jp/mt/system/template/index.php">template</a>
&#62; customize
</p>

このソースのポイントは、 MTParentCategories コンテナタグに exclude_current="1" を指定している点です。

exclude_current

「1」を設定するとリストから現在のカテゴリーを除く

こうすることにより、カレントカテゴリに対してはリンクを張らないようにできます。 カレントカテゴリにまでリンクを張りたい場合は、前述のテンプレートの強調部分を削除してください。

ただし、使い方に注意が必要

この方法だと自動でディレクトリごとのパンくずリストを作ることができますが、私はこの方法を採用していません。 当時採用しなかった理由とは、 「 / の後ろに index.php が付くのが嫌だった」 というものです。

これは少し本質と離れた理由ですが、実際には他の理由もあります。 <MTIfNonZero tag="MTCategoryCount"> の意外な落とし穴 - アーカイブ上で実際に展開される結果で述べましたが、その直下に記事を 1 件も持たないカテゴリの場合に不都合が出てきます。

記事を 1 件も持たないカテゴリの場合はカテゴリアーカイブが作成されず、パンくずリストで自動的にリンクを作ってしまうと 404 Not Found になってしまいます。 よって、 <MTIfNonZero tag="MTCategoryCount"> を活用して、存在しないディレクトリへのリンクを行わないようにすると良いでしょう。

私の考えるソース ver.2

<p>
<a href="<$MTBlogURL$>"><$MTBlogName$></a> &#62;
<MTParentCategories glue="&#62;" exclude_current="1">
  <MTIfNonZero tag="MTCategoryCount">
    <a href="<$MTCategoryArchiveLink$>"><MTCategoryLabel></a>
    <MTElse>
      <MTCategoryLabel>
    </MTElse>
  </MTIfNonZero>
</MTParentCategories>
&#62; <$MTArchiveTitle$>
</p>

このようにすると、記事を最低 1 件持つ ( = カテゴリアーカイブが生成される ) カテゴリのみにリンクが張られ、デッドリンクが作られてしまうことを防ぐことができます。 このテンプレートで実際に展開される HTML は次のようになります。 なお、 http://hxxk.jp/mt/system/template/customize/ 上で展開したと仮定します。 カテゴリアーカイブ撤廃に伴い、現在はこのディレクトリは存在しません。

<p>
<a href="http://hxxk.jp/mt/">MT hxxks</a>
&#62; system
&#62; template
&#62; customize
</p>

system カテゴリも template カテゴリも、その直下には記事を持っていないため、アーカイブが生成されません。 よって、このように対処して、アーカイブが存在しないカテゴリへのリンクは張らない方が良いということになります。

リプライ

4 件のリプライが送られています。 この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。

2005-04-22T21:03+09:00 - しん

真琴さん、こんばんわ。 「私の考えるソース ver.2」、コピペでバッチリできました。 どうもありがとうございました。 (MovableType、相変わらず再構築に涙ですが)今回お世話になったのは、約2ヶ月悩み諦めてしまったタグゆえ、再構築とは別の感激の意味で涙ものです。 あと1点、細かい所ですが、「私の考えるソース ver.2」では、親カテゴリのページを表示させたときだけ、「&#62;」が2つ連続で出てきます。「ブログ>>親カテゴリ」。現状では[ブログ]>親カテゴリという風に設定して、あまり目立たないようにしていますが(>>とて元々目立つものではありませんが)、これは 「glue="&#62;"」の限界でしょうか。

2005-04-24T00:03+09:00 - 真琴

exclude_current="1" を指定していると、カテゴリに区切りが発生しない状態 ( 親カテゴリ ) でも区切り文字が発生するようです。 詳しくは <a href="http://hxxk.jp/mt/2005/04/23/2356">http://hxxk.jp/mt/2005/04/23/2356</a> にて。

2005-09-13T14:57+09:00 - パンくずリストの設置 < ブログ別!作成・カスタマイズ講座

今回は、パンくずリストの設置方法について説明します。掲示板にてリクエストがありましたので、早速、取り上げてみました^^ パンくずリスト(パン屑リスト、トピックパ...

2006-01-03T23:00+09:00 - しずか

こんばんは。 感謝です。 私もPHPって、何がなんだかわからないので、ほかのところのパンくずのコードって、あまり使いたくありませんでした。 こういうソースを公開していただいて、ありがとう。 また、よらせてもらいます。

2 度目の大地震

記事データ

投稿者

望月真琴

投稿日時

2005-04-20T22:00+09:00

タグ
概要

初めての大地震でも被害は皆無だったのと同様、今回も幸い身体的・物的な損害は皆無でした。念のため早めに出勤し、業務に支障が出そうなところだけ点検して通常通りの業務開始と相成りました。

リプライ

リプライはまだありません。

記事本文

生存報告

初めての大地震でも被害は皆無だったのと同様、今回も幸い身体的・物的な損害は皆無でした。

地震のあった時間帯はまだ就寝中でしたが、ふだん 「一度寝たら起きない」 と一部で有名な私も流石に目が覚めました。 まあ、部屋の中の物が何も倒れていなかったので大丈夫だと判断し、また 30 分ほどの二度寝についたわけですが。

念のため早めに出勤し、業務に支障が出そうなところだけ点検して通常通りの業務開始と相成りました。 取引先の方のお話を聞くと、 「ふーん高速通行止めなんだ。 まあ自分は下道だから関係ないしと思っていたらすごく渋滞していましたよ……」 なんてこともあったようです。 そりゃあ貴方は高速道路を普段使わなくても、普段高速道路を使っている車が下道に出てくるんだから渋滞するでしょう、とツッコみましたが。

前回は地震発生が日曜日ということもあってか、交通への影響はさほど大きくなかったのかもしれませんが、今回は影響が大きかったようです。 午前中は通常通り業務をこなしたのでなんだか実感が沸かなかったのですが、お昼のニュースでは休校となった学校名を読み上げる場面が流れていたあたりが、やはり日常と違うと感じさせられました。

巡回先のご近所さん、その 1

本震から1ヶ月、ようやく落ち着きを取り戻したかと思ったところに随分と酷い余震がやってまいりました。

……まあ、前回と似た被害状況と言うことで。

前回は頭を掠める形で物が倒れていませんでしたっけ ?

巡回先のご近所さん、その 2

まだ現時点では最新の記事が地震発生時刻より前ですね。 大丈夫でしょうか ?

今回の余震も前回同様特に被害はありませんでしたので報告ー。 なんか心配していただいた方がいてびっくりしました。 ありがとうございます。 いつもと変わりませんので。 前回本棚が崩壊してワロス だった友人も問題ないそうです。

とのことです、よかったよかった。 ( いやまあ面識はおろか web 上のやりとりもやったことは無い方なんですが。 )

また、 yoko さん ( 煤け小姫 ) の友人であるらしい黒い日記帳の人 ( NAOYA さん ) は前回は甚大な被害を被っていましたが……。 こちらも現時点では地震発生時刻より前のものが最新記事。

地震時には特に被害らしい被害はありませんでした。 やっぱり本棚は木に限る、という説もあり。

友人さんもこの通り。

トラックバック送信先

リプライ

リプライはまだ送られていないか、管理者の承認待ち状態です。 この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。

補足情報

著作、講演、制作実績など