MTForで1ずつ減らす方法(from="12" to="1" の感じ)

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月

以上です。

Published 2014-04-23
Updated 2019-06-25

「Movable Type」カテゴリの記事一覧