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

【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

KO

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

Page Topへ