【Movable Type】IF文不要!カテゴリ毎にレイアウトを変える

  • CMS
【Movable Type】IF文不要!カテゴリ毎にレイアウトを変える

カテゴリ毎にレイアウトを変える方法

MTでカテゴリ毎に違ったレイアウトにしたい場合、
通常は下記のようなIF文を書くことで対応できます。

IF文で対応

<$mt:EntryCategory setvar="cat"$>
<mt:If name="cat" eq="カテゴリA">
  カテゴリAの内容
<mt:ElseIf eq="カテゴリB">
  カテゴリBの内容
<mt:ElseIf eq="カテゴリC">
  カテゴリCの内容
</mt:If>

しかしそれぞれのレイアウト用のHTMLがずらーっと書かれていると
テンプレートの可読性が下がってしまいます。

そこで考えられるのが各レイアウトをモジュール化することです。

モジュール化

<$mt:EntryCategory setvar="cat"$>
<mt:If name="cat" eq="カテゴリA">
  <$mt:Include module="カテゴリA"$>
<mt:ElseIf eq="カテゴリB">
  <$mt:Include module="カテゴリB"$>
<mt:ElseIf eq="カテゴリC">
  <$mt:Include module="カテゴリC"$>
</mt:If>

ここで気がつくことがひとつ。カテゴリ名とモジュール名が同じです。
ということで下記のようにすると、IF文がなくなりさらにスッキリします。

IF文無し

<$mt:EntryCategory setvar="cat"$>
<$mt:Include module="$cat"$>

わずか2行になりました!
カテゴリ名を変数化して module="$cat" として呼出しています。

カテゴリ名が変更になる恐れがある場合はカテゴリのベースネームで対応することも可能です。

Writer

KO

誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。

Contact

ご提案依頼、ご相談、お見積もりなど
お気軽にお問合わせください。

03-6403-3259

平日 10:00~19:00

「Web制作について」とお伝え頂ければ
担当者に取次させていただきます。

Mailform

contact@trym.jp
でも受け付けております。