Movable Type の MTFor タグでデクリメント(1ずつ減らす)で処理する方法をご紹介します。
Movable Type で「これが使えるようになるといろいろと便利になるよ」タグの一つである MTFor のお話しです。
<mt:For var="x" from="$from" to="$to" glue=" / ">
<mt:Var name="x">月
</mt:For>
これを再構築すると、変数 x が 1 ずつ増えて処理され以下のように出力されます。
1月 / 2月 / 3月 / 4月 / 5月 / 6月 / 7月 / 8月 / 9月 / 10月 / 11月 / 12月
以下のように increment モディファイアを指定すれば 2 ずつ増やすといったことも可能です。
<mt:For var="x" from="$from" to="$to" increment="2" glue=" / ">
<mt:Var name="x">月
</mt:For>
1月 / 3月 / 5月 / 7月 / 9月 / 11月
さて、これを「12月 / 11月 / 10月 / 9月 / 8月 / 7月 / 6月 / 5月 / 4月 / 3月 / 2月 / 1月」としたい場合はどうしたらいいのでしょうか。残念ながら increment="-1" や decrement="1" といったような「 1 ずつ減らす」といった指定はできないようです。
そんな時は、以下のようなテンプレートを書いてあげればOKです。
<mt:SetVar name="from" value="1">
<mt:SetVar name="to" value="12">
<mt:Var name="from" op="+" value="$to" setvar="y">
<mt:For var="x" from="$from" to="$to" glue=" / ">
<mt:Var name="y" op="-" value="$x" setvar="i">
<mt:Var name="i">月
</mt:For>
これを出力すると以下のようになります。
12月 / 11月 / 10月 / 9月 / 8月 / 7月 / 6月 / 5月 / 4月 / 3月 / 2月 / 1月
以上です。