Movable Type 備忘録

 

 カテゴリごとにテンプレートを切り替える

こんにちわ^^

もうすっかり春ですねぇ~(●´∀`●)
もうちょっとしたら、待ちに待ったGWです!!

今年のGWは長期休暇取りやすいですよね♪

さて、訪問者さんからカテゴリごとにテンプレートを差し替える方法についてご質問をいただいたので、この場を借りてご紹介します。

ちなみに、わたしのサイトではこちらのテンプレートカテゴリのみ別のテンプレートで差し替えています。

カテゴリ別にテンプレートを切り替えるには、カテゴリごとにテンプレート・モジュールを作成して再構築時に個別にテンプレートが作成されるようにします。

カテゴリ・アーカイブのテンプレート変更

基本的には変更したいカテゴリとそれ以外・・・というように考えます。
そうすると以下のようになります。

  1. <!-- カテゴリ名がテンプレート・カテゴリ名かどうかチェックします -->
  2. <MTIfEqual a="[MTCategoryLabel]" b="011Template( テンプレート )">
  3.   <!-- テンプレート・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  4.   <$MTInclude module="Category: Template"$>
  5. <MTElse>
  6.   <!-- それ以外の場合以下のテンプレート・モジュールをインクルードします -->
  7.   <$MTInclude module="Category: Standard"$>
  8. </MTElse>
  9. </MTIfEqual>

上記は実際にわたしのサイトで使ってるカテゴリ・アーカイブのテンプレートでして、Compareプラグインを使用して、カテゴリ名を元にテンプレート・カテゴリ(=011Template( テンプレート ))とそれ以外というように、2分岐させた例です。

複数のカテゴリでテンプレートを切り替えたい(多分岐させたい)場合には、こちらのブログの表示を条件で変えるでご紹介したMTSwitchプラグインを使用するといいかも、です。
その場合には以下のようになります。

  1. <MTSwitch value="[MTCategoryLabel]">
  2. <MTSwCase value="010MovableType( ムーバブルタイプ )">
  3.     <!-- ムーバブルタイプ・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  4.     <$MTInclude module="Category: MovableType"$>
  5. </MTSwCase>
  6.  
  7. <MTSwCase value="011Template( テンプレート )">
  8.     <!-- テンプレート・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  9.     <$MTInclude module="Category: Template"$>
  10. </MTSwCase>
  11.  
  12. <MTSwCase value="012Customize( カスタマイズ )">
  13.     <!-- カスタマイズ・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  14.     <$MTInclude module="Category: Customize"$>
  15. </MTSwCase>
  16.  
  17. <MTSwDefault>
  18.     <!-- 上記の何れにも該当しない場合以下のテンプレート・モジュールをインクルードします -->
  19.     <$MTInclude module="Category: Standard"$>
  20. </MTSwDefault>
  21. </MTSwitch>

- 2007.04.15 追記 -

TAEKOさんのアドバイスで、MovableType(ムーバブルタイプ)標準のタグ、<MTIfCategory>や<MTIfIsDescendant>条件タグでも同様のことが可能です。
具体的には以下のようなかんじになります。

  1. <MTIfCategory>条件タグによる2分岐
  2.  
  3. <MTIfCategory name="011Template( テンプレート )">
  4.     <!-- テンプレート・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  5.     <$MTInclude module="Category: Template"$>
  6. <MTElse>
  7.     <!-- それ以外の場合以下のテンプレート・モジュールをインクルードします -->
  8.     <$MTInclude module="Category: Standard"$>
  9. </MTElse>
  10. </MTIfCategory>

<MTIfIsDescendant>条件タグは、現在のカテゴリーが指定したカテゴリーの子孫であるかどうかを判定するタグです。
なので、チェックする際には階層が下(子孫カテゴリ)から条件分岐させていくのがポイントです ( ̄∇ ̄)b

  1. <MTIfIsDescendant>条件タグによる多分岐
  2.  
  3. <MTIfIsDescendant parent="011Template( テンプレート )">
  4.     <!-- テンプレート・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  5.     <$MTInclude module="Category: Template"$>
  6.  
  7. <MTElse>
  8.     <MTIfIsDescendant parent="012Customize( カスタマイズ )">
  9.         <!-- テンプレート・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  10.         <$MTInclude module="Category: Template"$>
  11.  
  12.         <MTElse>
  13.             <MTIfIsDescendant parent="010MovableType( ムーバブルタイプ )">
  14.                 <!-- ムーバブルタイプ・カテゴリの場合以下のテンプレート・モジュールをインクルードします -->
  15.                 <$MTInclude module="Category: MovableType"$>
  16.  
  17.                 <MTElse>
  18.                     <!-- 上記の何れにも該当しない場合以下のテンプレート・モジュールをインクルードします -->
  19.                     <$MTInclude module="Category: Standard"$>
  20.                 </MTElse>
  21.             </MTIfIsDescendant>
  22.         </MTElse>
  23.     </MTIfIsDescendant>
  24. </MTElse>
  25. </MTIfIsDescendant>

上記例を参考にして各自の目的に合った分岐を作ってあげて、カテゴリ・アーカイブのテンプレートを差し替えます。

ここではまだ再構築しないでくださいね。再構築するとエラーしますよ (; ̄∇ ̄A

カテゴリ別のテンプレート・モジュール作成

次にカテゴリ別のテンプレート・モジュールを作成します。
テンプレート・モジュールの作り方が分からない人は、こちらのMovableTypeのモジュールを作ってみるを参考にするといいかも、です。

ここの作業で、本来のカテゴリ・テンプレートを作成します。
わたしのサイトだと、

というかんじで、2つのテンプレートを作成しています。

カテゴリ・アーカイブを再構築

一通りテンプレート・モジュールを作成したら、カテゴリ・アーカイブのみ再構築します。
以上で、カテゴリごとにテンプレートを切り替えることができます ( ̄∇ ̄)/

わたしは性格的に在り来たりなのが嫌で、用途に応じてレイアウトを変更したり、カテゴリ別にテンプレート差し替えたりなど、何らかの変化がないとすぐ飽きちゃうんですの。
ワレながら困った性格だとは思ってます (; ̄∇ ̄A

先日、こちらの季節ごとにスタイルシートを切り替えるなんてのもご紹介してます♪

 Trackback Pings(1)

from kenny-west.com

MovableType でのサイト構築でちょっと手間取りました。 というわけで、...

 Comments(2)

#1: Posted by TAEKO [RES]

こんにちは。

これ、条件分枝させる時はプラグイン使わなくてもできますよー。
私は必要に応じて、<MTIfCategory>や<MTIfIsDescendant>などを使ってます。
カテゴリーごとに変えたい場合は<MTIfCategory>、特定のカテゴリ以下は全部同じにしたい場合などは<MTIfIsDescendant>の方がまとめて一括指定できるので楽かもです。
条件分枝タグは入れ子にして使えますから、複数のカテゴリで表示を変えたい場合にも対応できます。

<MTIfCategory>は3.3から追加されたタグですが、<MTIfIsDescendant>は3.1時代からありますので、バージョン低くても使えるかと。

#2: Posted by bzbell [RES]

>>1 TAEKO さん

こんにちわ^^

いつもアドバイスありがとうございます(●´∀`●)

そうですね。
MT標準の<MTIfCategory>や<MTIfIsDescendant>条件タグを使う方がバージョン依存もないし、環境にも依存しないですもんね ( ̄∇ ̄)b

MT始めたてのころは<MTIfIsDescendant>条件タグと<MTElse>条件タグで似たようなことやってたのですが、多分岐させたい場合入れ子が深くなってしまうので、見易く条件分岐させられる、MTSwitchプラグインで対応するようにしたんです。
強いて言えば、読み易さを重視した・・・といったところでしょうか。

でも、ダイナミック・パブリッシングに移行となった場合、標準タグを使っておけば問題にならずに済みますね。さっそく追記させてもらいます ( ̄∇ ̄)/

 Post a Comment

コメント用フィード