MovableType.jpに載っていないMTForタグの動作条件
MTForタグとは条件を満たす間だけ処理の繰り返しを行うブロックタグです。
その使い方を試している内に、「公式リファレンスの情報が足りない」と思う事に気づきました。
MTForタグの基本的な使い方はMovableType.jpを参照してください。
ここからの説明はそれを知っている事を前提にしています。
start、end、stepモディファイアについてはMovableType.orgから知りました。
以下の内容はMT4.261で検証しました。
from(start)モディファイア
fromは繰り返しの開始値を設定するモディファイアです。
fromではなくstartと記述しても動作します。
fromを設定する場合、以下の条件に基づいてなければなりません。
fromに設定した値はtoモディファイアの値以下であるfromに設定した値は整数である
この二つの条件を満たしていないとMTForタグは動作しません。
from=toと設定した場合、incrementの値に関係なく繰り返し回数は1回になります。
fromの値が整数でない場合、例えば小数を設定しようとするとその値は0へ修正されます。
他にも、fromの値やfromの設定自体を省略した場合、数字以外を設定しようとした場合も同様に修正されます。
値は整数であればいいので負の整数、0以下の値を設定する事ができます。
to(end)モディファイア
toは繰り返しを終了する値を設定するモディファイアです。
toではなくendと記述しても動作します。
toを設定する場合、以下の条件に基づいてなければなりません。
toに設定した値はfromモディファイアの値以上であるtoに設定した値は整数である
この条件はfromモディファイアと殆んど同じと言えるでしょう。
勿論、0以下の整数を設定する事もできます。
決定的な違いは、不正な値を設定しようとした場合にはMTForタグが動作しなくなるという事です。
fromモディファイアのように0へ修正されるという事はありません。
ただ例外として、fromモディファイアの記述を省略した場合にのみ、toモディファイアの記述を省略してもMTForタグは動作します。
その場合、incrementモディファイアの値に関係なく繰り返し回数は1回になります。
fromモディファイア同様、不正な値を設定しようとしたり設定自体を省略した場合には値が0へと修正されます。
increment(step)モディファイア
incrementは繰り返しの増加分を設定するモディファイアです。
incrementではなくstepと記述しても動作します。
incrementを設定する場合の条件は、一点だけです。
incrementに設定した値は正の整数である
負の整数と0、小数も、文字も、それら不正な値を設定しようとした場合は全て自動的に1へ修正されます。
ここがfromとtoとは違います。
記述を省略できる事はMovableType.jpにも載ってます。
varモディファイア
varは、fromからincrementの分ずつ増加する値をMTFor内で使うための名前を設定します。
あえて設定しなくても特殊変数__index__を使えば事は済みます。
まとめ
from、to、incrementのモディファイアを設定できる条件から、MTForタグは設定した値を増加させる条件でしか動作しないようです。
例外としてfromとtoの値が同じ場合も一回ですがループします。
なので、繰り返しの中で減少していく値を利用したい場合は、そのための変数を別途用意するしかないようです。
<$MTSetVar name="count" value="10"$>
<MTFor from="0" to="10" increment="2">
<p><$MTGetVar name="count"$></p>
<$MTSetVar name="count" op="-" value="2"$>
</MTFor>
変数の使い方次第で記述する数字を減らせます。
<$MTSetVar name="count" value="10"$>
<$MTSetVar name="step" value="2"$>
<MTFor from="0" to="$count" increment="$step">
<p><$MTGetVar name="count"$></p>
<$MTSetVar name="count" op="-" value="$step"$>
</MTFor>
これ以上は求める結果に応じて変わってくるので、臨機応変に。
復習問題
おさらいです。
以下の例は実際に動作するでしょうか。
動作しないでしょうか。
<MTFor>
<p>from/to/incrementの記述がありません。</p>
</MTFor>
<MTFor from="-10" to="-5" increment="2">
<p>-10から-5へ2ずつステップします。</p>
</MTFor>
<MTFor from="10" to="5" increment="-2">
<p>10から5へ-2ずつステップします。</p>
</MTFor>
コメント[0]
コメント投稿フォーム
コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。
コメントはまだありません。