TOPページ > 変数 > 繰り返し処理における予約変数
繰り返し処理における予約変数
Movable Type では、ループ(繰り返し処理)において、以下のような予約変数を用いることができます。
- __first__
- ループ先頭の場合、実行されます。
- __last__
- ループ末尾の場合、実行されます。
- __odd__
- ループ奇数回目の場合、実行されます。
- __even__
- ループ偶数回目の場合、実行されます。
- __index__
- ループインデックスを、格納します。
- __counter__
- ループ回数を、格納します。
書き方は、MTForループで使用する場合は、以下を参考にしてください。
<MTFor var="x" from="1" to="10">
<MTIf name="__first__">
<p>先頭:<MTGetVar name="x"></p>
</MTIf>
<MTIf name="__last__">
<p>末尾:<MTGetVar name="x"></p>
</MTIf>
<MTIf name="__odd__">
<p>奇数:<MTGetVar name="x"></p>
</MTIf>
<MTIf name="__even__">
<p>偶数:<MTGetVar name="x"></p>
</MTIf>
<MTIf name="__counter__">
<p>カウンタ:<MTGetVar name="x"></p>
</MTIf>
</MTFor>
MTForのほかに、MTLoop、MTEntries、MTCategoriesなどの、繰り返し処理を行えるブロックタグで使用することができます。また、そのループ中において条件分岐を行うMTIfでも使用することができます。
また、これらの予約変数は、既に代入(MTSetVar)されたものとして、通常の変数と同じように取り扱うことができます。以下のサンプルコードでは、MTGetvarテンプレートタグでループのインデックスを取得します。
<MTFor var="x" from="1" to="10">
<MTGetVar name="__index__">
</MTFor>
この機能を用いたストライプ柄のエントリリストのサンプル
MTEntriesブロックタグを用いエントリリストを生成します。このとき、リストの背景色を、奇数回を白、偶数回を灰色とします。
CSS
.odd {
background:#ffffff;
}
.even {
background:#cccccc;
}
エントリリストのコード
<ul>
<MTEntries lastn="10">
<li class="<MTIf name="__odd__">odd<MTElse>even</MTIf>"><a href="<MTEntryPermaLink>"><MTEntryTitle></a></li>
</MTEntries>
</ul>
注意点
MTForで__index__、__odd__、__even__を用いる場合は、以下の点に注意してください。
- ループを0から開始した場合、__index__はループの先頭が取得できません。
- ループを偶数回から開始した場合、__odd__と__even__の結果が入れ替わるときがあります。
- ページ先頭へ
- 前のエントリ: 再構築するテンプレートを変数で制御する
- 次のエントリ: MTにおける変数の有効範囲や、それに関わる問題点
- カテゴリ:変数