MovableType4で追加されたMTIfタグ

MovableType4ではたくさんのタグが追加されましたが、そのなかでも「MTIf」タグは複雑な条件分岐が可能となるとても便利で重要なタグです。
また、MTSetVarやMTGetVarと組み合わせることでひとつのテンプレートで複数のレイアウトを実現できるようになります。
まずはデフォルトテンプレートを参考にしながら実際のテンプレート内での使い方を調べてみます。

MTIfタグの使い方(タグリファレンス参考)

MTIfはブロックタグと呼ばれます。MT3のころはコンテナ・タグと呼ばれていたものと同じで開始タグと終了タグのブロックで囲みます。

MTSetVarやMTSetVarBlock、MTSetVarTemplateタグの変数を分岐の条件とします。

書式

<MTIf 属性1 [属性2]>
真のときの処理
<MTElse>
偽のときの処理
</MTElse>
</MTIf>
属性1:必須(MT4からはモディファイアというみたい)
name="変数名"

条件にしたいMTSetVarでセットしたnameと同じ名前を使います。この値で条件分岐が行われます。

属性2:任意

設定しないときはMTSetVarのvalueモディファイアが設定されていて、かつ値が0でないときに実行されます。

属性2を設定することでMTSetVaなどにセットされた値や変数を次のような条件で比較し、真のときにブロック内が実行されます。

like
含まれるかどうか
eq
一致するかどうか
ne
一致しないとき
lt
小さいとき
gt
大きいとき
le
以下のとき
ge
以上のとき
 

ヘッダーテンプレート内でみてみる

ヘッダーテンプレート内でMTIfタグが使われている箇所を実際に見てみることにします。わかりやすいのがbodyタグのところ。その前半部分で次のように書いてあります。

body class="<MTIf name="body_class"><$MTGetVar name="body_class"$> </MTIf>・・・

ここでは「body_class」という変数をもとに条件分岐を行っています。これが真ならば「body_class」の値を表示するということになります。

次に、ヘッダーはメインページに読み込まれているのでみてみましょう。

メインページでは、冒頭に次のような記述があります。

<MTSetVar name="body_class" value="mt-main-index">
<MTSetVar name="main_template" value="1">
<MTSetVar name="main_index" value="1">
<MTSetVar name="sidebar" value="1">
<MTSetVar name="module_recent_entries" value="1">
<MTSetVar name="module_category_archives" value="1">
<MTSetVar name="module_author_archives" value="1">
<MTSetVar name="module_monthly_archives" value="1">

<$MTInclude module="ヘッダー"$>

一行目に注目!

<MTSetVar name="body_class" value="mt-main-index">

ここで変数「body_class」がセットされています。

つまり、読み込んだ先のテンプレート(メインページ)に変数body_classが設定されていたら値「mt-main-index」という文字列を書き出すという意味になります。実際に書き出されるHTMLは

body class="mt-main-index"

となります。

MT4ではテンプレートの共通部分を「ヘッダー」のような部品として小さなテンプレートに分け、必要な部品を読み込むような構造になっています。もし「MTIf」タグがなければどうでしょう?テンプレートの構造がちょっとしか違わなのに別のモジュールを用意しなければならなくなります。これではモジュールの管理だけで大変です。

MTIfタグを利用することで汎用性の高いモジュールを作成することができます。

そうのひとりごと

© 2017 PAOLOG