エントリの表示回数で条件分岐をする

エントリの表示回数をカウントして処理を分岐したいときってたまにあると思う。
調べてみたら以下のようなやり方らしい。

<mt:Entries category="カテゴリA" lastn="3">
<MTIf name="__counter__" eq="3">
三件目の記事
<MTElse>
それ以外の記事
</MTIf>
</mt:Entries>

↑の場合は3件記事を表示して表示回数が3回目かどうかで分岐する。
MTEntriesタグはエントリー数だけループすることになるけど、
それとは別にMTではforループと同じ動きをするタグがある。
MTFor | テンプレートタグリファレンス

<mt:for var="test" from="10" to="20" increment="2">
    <p>now test = <mt:var name="test"> | __index__: <MTVar name="__index__"> | __counter__: <MTVar name="__counter__"></p>
</mt:for>

こちらの結果はこんな感じになる。

<p>now test = 10 | __index__: 10 | __counter__: 1</p>
<p>now test = 12 | __index__: 12 | __counter__: 2</p>
<p>now test = 14 | __index__: 14 | __counter__: 3</p>
<p>now test = 16 | __index__: 16 | __counter__: 4</p>
<p>now test = 18 | __index__: 18 | __counter__: 5</p>
<p>now test = 20 | __index__: 20 | __counter__: 6</p>

■モディファイア

  • from

ループ開始時の値を設定する。

  • to

設定した値を越えた場合、ループは停止。

  • increment

増加数。いくつおきにループをカウントするかを入力する。

■特別な変数

  • __first__

ループ出力の最初である場合 true (1) となる。

  • __last__

ループ出力の最後である場合 ture (1) となる。

  • __odd__

ループ出力の奇数回目の場合 ture (1) となる

  • __even__

ループ出力の偶数回目の場合 ture (1) となる。

  • __index__

ループのインデックスを格納する。

  • __counter__

ループした回数を格納する。

MTってループできないのかなと思ってたのでこんな機能があるのは嬉しい。
あまり使うことはないけど知ってると役に立つかな。