MovableTypeの場合、表示については以下のようなテンプレートが主に使われます。
- メインページ
- エントリーアーカイブ
- 日付アーカイブ
- カテゴリーアーカイブ
その内、上の3つはサブという概念がありません。
カテゴリーアーカイブのみサブの概念があります。それ故、ディレクトリ構造が固定でありません。
サブカテゴリーを作ったときに問題となるのがimg要素を使って表示する画像です。サイトロゴや、プロフィール用の画像が該当すると思います。
画像を専用のディレクトリに入れていたとすると、メインカテゴリーとサブカテゴリーではそれぞれのカテゴリーファイルから見たときの画像のパスが異なります。メインカテゴリーしかないというのなら、MTタグ使わなくてもテンプレートに書けばいいのですが・・・
メインカテゴリー(トップレベル・カテゴリー)とその直下になるサブカテゴリーで同じ画像を使い回すにはどうすればいいのでしょうか?各カテゴリーのフォルダごとに画像をぶち込むとか、絶対パスで画像のパスを記述するのは原始的な方法です。
各メインカテゴリーには必ずサブカテゴリーがあるというのなら、MTHasSubCategoriesタグとMTHasNoSubCategoriesを使えばいいですが、当Blogのように一部のカテゴリーだけサブカテゴリーがあるという場合は、MTHasParentCategoryとMTHasNoParentCategoryを使うと幸せになれるでしょう。
当Blogでの例をあげます。ディレクトリ構造は、以下のような感じ。
/(メインページ)
|--img
|--cat1.gif(使い回す画像ファイル)
|--メインカテゴリー
|--サブカテゴリー
|--サブカテゴリー
|--メインカテゴリー
|--メインカテゴリー
カテゴリーアーカイブでの実際の記述は以下の通り。サイトタイトル部分でimg要素を使用しています。
<MTHasNoParentCategory> <img src="../img/cat1.gif" width="74" height="80" alt="" /> </MTHasNoParentCategory> <MTHasParentCategory> <img src="../../img/cat1.gif" width="74" height="80" alt="" /> </MTHasParentCategory>
MovableTypeの場合は、条件分岐タグというのがいくつもあります。ケースバイケースで使い分ける必要があります。
Movable Type 3.3 テンプレート・タグ リファレンス
を参照にするとよいでしょう。
(追記)
はてブのコメントで、以下のようなコメントをもらったので、紹介。
「絶対パスで画像のパスを記述するのは原始的な方法です」に疑問。簡単だし、テンプレート側でややこしいことをしなくて済むという利点もあるのでは。(Six Apart http://www.sixapart.jp/ ではimg要素に絶対URIを使用)
テンプレート側でややこしいことをしなくても済むというのはメリットでしょう。それに関しては認めます。でも、Six Apartが絶対URIを使っているからそれでいいんじゃないのかというのであれば逆に疑問に感じます。

コメント (2)
<img src="<$MTBlogRelativeURL$>img/cat1.gif" width="74" height="80" alt="" />
とするのが最も負荷なく、また個人的には自然だと思いますが、絶対パスがお気に召さないのであれば
<img src="<MTHasParentCategory>../</MTHasParentCategory>../img/cat1.gif" width="74" height="80" alt="" />
とすることで、余計な条件分岐を一つ減らすことができ、負荷も軽減できます。ご一考ください。
投稿者: drry | 2007年05月24日 21:54
日時: 2007年05月24日 21:54
>drryさん
私の文章の書き方がまずかったかなと思いつつ。
テンプレートの中で直接絶対パスを書くというのが原始的であって、吐き出されるHTMLソース内で絶対パスであるかは問うつもりはありませんでした。
MTBlogRelativeURLを使えば、孫カテゴリーとか混在でも全く問題ないですね。
条件文がMTの負荷をあげてしまうというのもわかってきたので、記事数が多いこのBlogでは極力減らさないといけないのかなと感じています。
投稿者: FUMING | 2007年05月25日 19:38
日時: 2007年05月25日 19:38