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を有効にしてください。
トラックバック[1]
- グローバル・モディファイアを自由自在に使う方法 - 45式::雑記 (2010年1月31日22:56)
- MTタグで使えるグローバル・モディファイアを好きな場所で好きなだけ使う為にはMTIfタグを利用します。(現在はMTForタグを使っています)
コメントはまだありません。