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

エントリー本文

Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法(その2)

Posted at April 28,2008 2:11 AM
Category:[エントリー]
Tag:[, , ]

Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法を、2回に分けて紹介します。

「サンプルを」という要望を頂いているのですが、時間がとれないので、以下のイメージのみでお許しください。

やりたいことは、ひとつのブログ記事アーカイブを使った、カテゴリー別のブログ記事ページのデザイン(HTMLマークアップやCSS)の切り替えです。

カスタマイズイメージ

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

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

カテゴリー1~3

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

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

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

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

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

2.MTEntryIfCategory タグを除去して、モジュール化をさらに最適化する

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

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

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

<$MTCategoryLabel setvar="category_name$>
<$MTInclude module="$category_name"$>

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

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

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

2つめのリストのように、デフォルトのデザインと振り分けたい場合は、さらに MTIf タグと MTCategoryDescription タグで制御します。

<$MTCategoryDescription setvar="category_description$>
<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


コメント

お忙しいようでサンプルが見れないのが残念です。
イメージ的にはなかなかいい感じのカスタマイズのように思えます。
また、どなたかカスタマイズされるでしょ
その時には是非見てみたいものです

[1] Posted by conan : April 28, 2008 9:36 PM

>conanさん
こんばんは。
サンプルなしで申し訳ありません。
ではでは!

[2] Posted by yujiro : May 1, 2008 2:10 AM
コメントする
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