MTで繰り返しを処理するには、forとloopがある。
まずは、forの使い方。
<mt:for var="i" from="1" to="10"> <$mt:setvar name="foo[$i]" value="$i"$> </mt:for> <mt:for var="i" from="1" to="10"> <p><$mt:getvar name="foo[$i]"$></p> </mt:for>
まずは、青文字のところで、配列fooに値を代入。
foo[1]=1
foo[2]=2
.
.
.
foo[10]=10
が代入される。その後、赤文字の文で出力させる。
基本的な文法は、
<mt:for var="変数名" from="開始" to="終わり" increment="増加値"> 処理 </mt:for>
こんな感じ。incrementは省略OK。省略した場合は1ずつ増加する。
次は、loopの説明。
<mt:sethashvar name="week"> <$mt:setvar name="mon" value="Monday"$> <$mt:setvar name="tue" value="Tuesday"$> <$mt:setvar name="wed" value="Wednesday"$> <$mt:setvar name="thu" value="Thursday"$> <$mt:setvar name="wed" value="Wednesday"$> <$mt:setvar name="sat" value="Saturday"$> <$mt:setvar name="sun" value="Sunday"$> </mt:sethashvar> <mt:loop name="week" sort_by="key"> <dl> <dt><$mt:getvar name="__key__"$></dt> <dd><$mt:getvar name="__value__"$></dd> </dl> </mt:loop>
青文字で、ハッシュweekに値を代入。
week{mon} = Monday
week{tue} = Tuesday
.
.
.
week{sun} = Sunday
こんな感じで格納される。
次に赤文字で出力する。この場合出力されたのは、下記の様なhtml。
<dl> <dt>mon</dt> <dd>Monday</dd> </dl> <dl> <dt>sat</dt> <dd>Saturday</dd> </dl> <dl> <dt>sun</dt> <dd>Sunday</dd> </dl> <dl> <dt>thu</dt> <dd>Thursday</dd> </dl> <dl> <dt>tue</dt> <dd>Tuesday</dd> </dl>
ハッシュには、順序性が無く、sort_byで指定した規則に基づいて出力されるらしい。
1:キーの文字列順 sort_by="key" 2:キーの文字列順(逆順) sort_by="key reverse" 3:キーに対応する値の文字列順 sort_by="value" 4:キーに対応する値の文字列順(逆順) sort_by="value reverse" 5:キーに対応する値の文字を数値として比較・並べ替える sort_by="value numeric" 6:キーに対応する値の文字を数値として比較・並べ替える(逆順) sort_by="value numeric reverse"
こんな感じ。
loopの基本的な文法。
<mt:loop name="変数名"> 処理 </mt:loop>
forとの違いは、繰り返す条件を指定しない所。
詳しくは、リファレンスにて。
forのMTリファレンス
loopのMTリファレンス