Lekumo ビジネスブログ

サポート

MTIf

説明

現在のコンテキストに設定されている変数が記述した条件に合致する(あるいは合致しない)ときに実行される条件タグです。

ここで説明されている一連のタグ群の機能で、MTIfVar タグを置き換えます。MTIfVar タグは廃止します。

<MTIfVar name="foo">...</MTIfVar>
... is equivalent to
<MTIf name="foo">...</MTIf>

既定値

<MTIf> および <MTElseIf> は、常に false と判定されるので、実行されません。<MTElse> に属性を指定しなかった場合は、Default の MTElse(後述)と解釈されます。

name 属性と tag 属性

MTIf には、name または tag のどちらかを必ず指定します。これらの属性は1つの MTIf(または MTElse、MTElseIf)タグの中でどちらか1つしか指定できません。

name 属性

設定できる値 変数名を表す任意の文字列
既定値 なし

<MTIf name="foo"> は、コンテキスト変数 foo に値がある(空文字列または 0 ではない)ときにtrue判定され、ブロック内部のテンプレートを解釈します。

また以下のいずれかの属性と組み合わせることで、true 判定される値を変えることができます。

tag 属性

設定できる値 Lekumo ビジネスブログ で利用できる MT タグの名前
既定値 なし

<MTIf tag="TagName"> は、 <MT TagName> の解釈結果に値がある(空文字列または 0 ではない)ときに true 判定され、ブロック内部のテンプレートを解釈します。

判定条件を変更する属性

以下の属性は、name または tag の処理結果を true 判定する条件を制御するために利用できます。これらの属性は1つの MTIf(または MTElse、MTElseIf)タグの中で1つしか指定できません。

like

設定できる値 任意の文字列または構文として正しい Perl 正規表現
既定値 なし

<MTIf name="foo" like="Lekumo"> は、コンテキスト変数 foo の値に "Lekumo" という文字列が含まれているときに true 判定され、ブロック内部のテンプレートを解釈します。

<MTIf name="foo" like="(Lekumo)|(BB)$"> は、コンテキスト変数 foo の値が "Lekumo" という文字列で始まるかまたは "BB" という文字列で終わるときに true 判定され、ブロック内部のテンプレートを解釈します。

eq

設定できる値 任意の文字列
既定値 なし

<MTIf name="foo" eq="Lekumo"> は、コンテキスト変数 foo の値が "Lekumo" という文字列であるときに true 判定され、ブロック内部のテンプレートを解釈します。

ne

設定できる値 任意の文字列
既定値 なし

<MTIf name="foo" ne="Lekumo"> は、コンテキスト変数 foo の値が [Lekumo] という文字列でないときにtrue判定され、ブロック内部のテンプレートを解釈します。

lt

設定できる値 任意の文字列
既定値 なし

<MTIf name="foo" lt="100"> は、コンテキスト変数 foo の値が100よりも小さいときに true 判定され、ブロック内部のテンプレートを解釈します。

gt

設定できる値 任意の文字列
既定値 なし

<MTIf name="foo" gt="100"> は、コンテキスト変数 foo の値が 100 よりも大きいときに true 判定され、ブロック内部のテンプレートを解釈します。

le

設定できる値 任意の文字列
既定値 なし

<MTIf name="foo" le="100"> は、コンテキスト変数 foo の値が 100 以下のときに true 判定され、ブロック内部のテンプレートを解釈します。

ge

設定できる値 任意の文字列
既定値 なし

<MTIf name="foo" ge="100"> は、コンテキスト変数 foo の値が100以上のときに true 判定され、ブロック内部のテンプレートを解釈します。

その他の属性

tag 属性を指定した場合、上記の判定条件を変更する7つの属性以外の属性を指定すると、その属性は tag 属性で指定された MT タグに対する属性として解釈されます。

<MTIf tag="MTEntries" lastn="1"> は、<MTEntries lastn="1"> を処理した結果に値があるときに true 判定され、ブロック内部のテンプレートを解釈します。

MTElse

MTElse は(MTIf と組み合わせて利用する場合は)、必ず MTIf ブロックの中に現れなければなりません。

MTElse は、ブロックの終了を </MTElse> または </MTIf> のどちらかで宣言できます。以下の 2 種類の記述はどちらも有効です。

<MTIf ... >
... Do something ...
<MTElse ... >
... Do something else ...
</MTIf ... >
<MTIf ... >
... Do something ...
<MTElse ... >
... Do something else ...
</MTElse ... >
</MTIf ... >

属性

MTElse には、MTIf と同じ属性を同じ条件で指定できます。MTElse に属性を指定すると、 MTIf が false 判定されたときに指定された内容にのっとって true / false 判定が行われ、true 判定された場合にはブロック内部のテンプレートを解釈します。

属性を指定した MTElse は、1つの MTIf ブロックの中に複数回出現することができます。この場合、true / false 判定は上に記述してあるものから順番に行われ、1つの MTElse が true 判定された時点で、(同じ MTIf ブロック内部で)それ以降に記述された MTElse は処理されません。

Default の MTElse

属性を記述しない MTElse は、1 つの MTIf ブロックの中に1つだけ出現することができます。また、属性を指定した MTElse よりも上に出現することはできません。属性を記述しない MTElse を「Default の MTElse」と呼びます。

Default の MTElse は、MTIf および同じ MTIf ブロック内部のすべての MTElse が false 判定されたときに、そのブロック内部のテンプレートを解釈します。

MTElseIf

MTElseIf は MTElse の別名にすぎません。

質問

nameとtagは両方設定している場合

<MTIf name="foo" tag="TagName"> というような形で、 name と tag を両方設定している場合はどのように動作するのでしょうか?

「一つだけしか指定できない」が仕様なので、この場合の動作は不定です。

page top