movabletype.jp
検索

MTIf BLOCK MT4.1

設定した条件により実行内容を分けるためのブロックタグです。MTSetVar ファンクションタグや、MTSetVarBlock, MTSetVarTemplate ブロックタグで定義した変数を用いて条件文を作成します。

このタグは条件を満たした場合に実行します。条件を満たさない場合に実行する場合は、MTUnless ブロックタグを使用するか、MTIf ブロックタグの中で MTElse, MTElseIf ブロックタグを使用します。

使い方

<$mt:SetVar name="love" value="polar bear"$>

<mt:If name="love" eq="elephant">
<p>私はゾウを愛しています</p>
<mt:ElseIf eq="polar bear">
<p>私はゾウより、シロクマを愛しています</p>
<mt:Else>
<p>私はゾウもシロクマも愛していないのです</p>
</mt:If>

モディファイア

name="foo"

条件文の対象となる変数の名前 (MTSetVar ファンクションタグなどで設定した name モディファイアの値) を設定します。このモディファイアの値をもとに条件分岐がおこなわれます。MTIf タグの使用には、このモディファイアもしくは tag モディファイアのいずれかが必須です。もしいずれのモディファイアも指定していない場合は、必ず false (偽) を返します。

name 以外にモディファイアを指定しない場合は、指定した変数の値の有無で判定します。指定したテンプレートタグに 0 以外の値がある場合は true (真)0 もしくは値が無い場合は false (偽) を返します。

<$mt:SetVar name="elephant" value="foo"$>
<mt:If name="elephant">
<p>変数 elephant に値があるので、この段落は表示されます。</p>
</mt:If>
tag="TagName"

Movable Type のテンプレートタグを指定します。指定したテンプレートタグの出力値をもとに条件分岐がおこなわれます。接頭辞の MT は省略できます。name モディファイアとの併用はできません。併用した場合は name モディファイアが優先されます。

tag 以外にモディファイアを指定しない場合は、指定したテンプレートタグの値の有無で判定します。指定したテンプレートタグに 0 以外の値がある場合は true (真)0 もしくは値が無い場合は false (偽) を返します。

<mt:If tag="CategoryLabel" eq="foo">
<p>MTCategoryLabel タグの出力内容が foo なので、この段落は表示されます。</p>
</mt:If>

さらにモディファイアを指定して条件を細かく設定できます。何も指定しない場合は、name もしくは tag モディファイアに指定した変数に 0 以外の値がある場合にのみ実行します。

like="foo"

指定した変数の値に foo が含まれる場合にのみ実行します。

<$mt:SetVar name="elephant" value="love"$>
<mt:If name="elephant" like="lo">
<p>変数 elephant の値に lo が含まれるので、この段落は表示されます。</p>
</mt:If>

like モディファイアでは Perl の正規表現を利用できます。以下の例では name モディファイアに指定した変数の値が barbaz で始まる場合にのみ実行します。

<$mt:SetVar name="elephant" value="barcamp"$>
<mt:If name="elephant" like="^(bar|baz)">
<p>変数 elephant の値に bar もしくは baz で始まるので、この段落は表示されます。</p>
</mt:If>
eq="foo"

指定した変数の値が foo と一致する場合にのみ実行します。

<$mt:SetVar name="elephant" value="love"$>
<mt:If name="elephant" eq="love">
<p>変数 elephant の値が love と一致するので、この段落は表示されます。</p>
</mt:If>
ne="foo"

指定した変数の値が foo と一致しない場合にのみ実行します。

<$mt:SetVar name="elephant" value="love"$>
<mt:If name="elephant" ne="like">
<p>変数 elephant の値が like と一致しないので、この段落は表示されます。</p>
</mt:If>
lt="foo"

指定した変数の値が foo よりも小さい場合にのみ実行します。

<$mt:SetVar name="age" value="28"$>
<mt:If name="age" lt="30">
<p>変数 age の値が 30 より小さいので、この段落は表示されます。</p>
</mt:If>
gt="foo"

指定した変数の値が foo よりも大きい場合にのみ実行します。

<$mt:SetVar name="age" value="28"$>
<mt:If name="age" gt="26">
<p>変数 age の値が 26 より大きいので、この段落は表示されます。</p>
</mt:If>
le="foo"

指定した変数の値が foo 以下の場合にのみ実行します。

<$mt:SetVar name="age" value="28"$>
<mt:If name="age" le="100">
<p>変数 age の値が 100 以下なので、この段落は表示されます。</p>
</mt:If>
ge="foo"

指定した変数の値が foo 以上の場合にのみ実行します。

<$mt:SetVar name="age" value="28"$>
<mt:If name="age" ge="28">
<p>変数 age の値が 28 以上なので、この段落は表示されます。</p>
</mt:If>
op new in mt4.1

op モディファイアに関しては、ドキュメント: テンプレートタグで利用できる演算関数を参照ください。

indexnew in mt4.1

配列のインデックス (添え字) を指定して、配列の変数から値を取り出します。

<mt:If name="foo" index="0" eq="hoge">

このタグは以下のようにも書くことができます。

<mt:If name="foo[0]" eq="hoge">

名前[添え字] という記述が index モディファイアの代わりです。

key new in mt4.1

ハッシュのキーを指定して、ハッシュの変数から値を取り出します。

<mt:If name="bar" key="a" eq="hoge">

このタグは以下のようにも書くことができます。

<mt:If name="bar{a}" eq="hoge">

名前{キー} という記述が key モディファイアの代わりです。

test new in mt4.1

Perl の式を記述することができ、結果を利用して条件分岐をおこないます。

Updated on 2015-08-27, 19:00 .
MTDDC MEETUP TOKYO 2016

Movable Type 関連書籍