TopMovable Typeカスタマイズカテゴリー > Movable Type 4 でカテゴリー別にデザインを切り替える方法(その3)
News
各種ブログテンプレート
2008年2月22日

エントリー本文

Movable Type 4 でカテゴリー別にデザインを切り替える方法(その3)

Posted at February 22,2008 2:02 AM
Category:[カテゴリー]
Tag:[, , ]

Movable Type 4 でカテゴリー別にデザインを切り替える方法を、何回かに分けて紹介します。

1.MTIfCategory タグブロック内のサブテンプレートをモジュール化する

カテゴリーアーカイブのデザインを変更する2つめの方法で、MTIfCategory タグブロック内にサブテンプレートをベタ書きするのではなく、MTInclude タグを使います。

カテゴリー1~3

<MTIfCategory name="カテゴリー1">
<$MTInclude module="カテゴリー1"$>
</MTIfCategory>
<MTIfCategory name="カテゴリー2">
<$MTInclude module="カテゴリー2"$>
</MTIfCategory>
<MTIfCategory name="カテゴリー3">
<$MTInclude module="カテゴリー3"$>
</MTIfCategory>

こうすることにより、カテゴリーアーカイブ本体では「どのカテゴリーにどのテンプレートを割り当てるか」という制御に徹することができ、テンプレート全体の見通しがよくなります。

汎用的なデザインを与えたいカテゴリー4~6を新たに追加する場合は、次のようにします。

<MTIfCategory name="カテゴリー1">
<$MTInclude module="カテゴリー1"$>
<MTElse>
  <MTIfCategory name="カテゴリー2">
  <$MTInclude module="カテゴリー2"$>
  <MTElse>
    <MTIfCategory name="カテゴリー3">
    <$MTInclude module="カテゴリー3"$>
    <MTElse>
    <$MTInclude module="カテゴリーその他"$>
    </MTIfCategory>
  </MTIfCategory>
</MTIfCategory>

最初の MTIfCategory タグでカテゴリー1であるかの判定をし、そうでなければ MTElse を実行して、次の MTIfCategory タグでカテゴリー2であるかの判定をします。その繰り返しで、最後のカテゴリー判定にマッチしなかったカテゴリーには一番最後の MTElse タグの内容、つまりデフォルトとなるデザインのテンプレートモジュールを呼び出します。

2.MTIfCategory タグを除去して、モジュール化をさらに簡素化する

さて、すでにお気づきの方もいらっしゃると思いますが、最初のリストは、カテゴリーを識別するキーさえ取得できれば、実は以下の1行で済みます。

<$MTInclude module="カテゴリーを識別するキー"$>

「カテゴリーを識別するためのキー」として、次のようにカテゴリー名を使ってみます。カテゴリー名は、MTInclude タグを実行する前に、MTSetVarBlock タグを使って変数に設定し、変数名をmoduleモディファイアに与えれば、ダイナミックにカテゴリー名を設定することができます。

<mt:setvarblock name="category_name"><$MTCategoryLabel$></mt:setvarblock>
<$MTInclude module="$category_name"$>

これで、このアーカイブが「カテゴリー1」の再構築を行うときには変数 category_name には「カテゴリー1」が、「カテゴリー2」の再構築を行うときには変数 category_name には「カテゴリー2」...という具合に設定され、それぞれ「カテゴリー1」「カテゴリー2」...という名前のテンプレートモジュールを呼び出します。

注意するのは、変数category_nameをmoduleモディファイア(というか、nameモディファイア以外)で使う場合は、変数名の前に大抵「$」をつけておく、ということです。

3.MTIf タグを使ってデフォルトデザインの条件分岐をつける

2つめのリストのように、デフォルトのデザインと振り分けたい場合は、さらに MTIf タグと MTCategoryDescription タグで制御します。この方法は SYSTEM STUDIO さんよりアイデア頂きました。ありがとうございました。

<mt:setvarblock name="category_description"><$MTCategoryDescription$></mt:setvarblock>
<mt:if name="category_description">
  <$MTInclude module="$category_description"$>
<mt:else>
  <$MTInclude module="デフォルト"$>
<mt:if>

このリストを使う前準備として、各カテゴリーの「カテゴリーの説明」欄に、呼び出したいモジュール名を設定しておきます。デフォルトデザインのモジュールを呼び出したいときには、「カテゴリーの説明」欄には何も設定しません。

そうすれば、MTIf タグの判定で「カテゴリーの説明」欄に記入されている場合に、「カテゴリーの説明」欄に設定された名前のテンプレートモジュールを呼び出します。「カテゴリーの説明」欄に記入していない場合は、「デフォルト」という名前のテンプレートモジュールを呼び出します。

なお、前回もお伝えしたとおり、「カテゴリーの説明」欄を使うよりも、カスタムフィールドを利用した方が妥当に思われます。


Posted by yujiro ReTweet This!
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL


コメントする
greeting

*必須



ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

Now loading...
Introduction
Entries of this Category
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.02