【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が得意ですが、本当の特技は薪割りです。