予約変数を使った繰り返し処理
久しぶりにMT弄ったついでに「CMSとして使うMovable Typeガイドブック」を読んでいたら便利そうなのがあったのでメモ。
繰り返し処理用のテンプレートタグ(<MTEntries>とか)には繰り返しの初回や偶数・奇数を判定するための予約変数というものがあります。それぞれ該当する繰り返し時に変数1を、該当しない場合0を取ります。
| 変数名 | 変数が取る値 |
|---|---|
| __first__ | 初回の繰り返しであれば1 |
| __last__ | 最後の繰り返しであれば1 |
| __odd__ | 奇数回の繰り返しであれば1 |
| __even__ | 奇数回の繰り返しであれば1 |
| __counter__ | 現在の繰り返し回数 |
ifタグを用いて、該当する繰り返し時に文字列を出力させてみる。
<MTEntries> <$mt:GetVar name="__counter__"$>回目! <mt:if name="__first__"> 1回目の繰り返しで表示されるよ </mt:if> <mt:if name="__even__"> 偶数回の繰り返しで表示されるよ </mt:if> <mt:if name="__odd__"> 奇数回の繰り返しで表示されるよ </mt:if> <mt:if name="__last__"> 最後の繰り返しで表示されるよ </mt:if> </MTEntries>
出力結果は以下のようになります。
1回目!
1回目の繰り返しで表示されるよ
奇数回の繰り返しで表示されるよ
2回目!
偶数回の繰り返しで表示されるよ
3回目!
奇数回の繰り返しで表示されるよ
4回目!
偶数回の繰り返しで表示されるよ
最後の繰り返しで表示されるよ
これを応用すればエントリー毎に背景を変えたい場合とかに使えます。
<div>に偶数回の時にはclass=”odd”、奇数回の時にはclass=”even”を付与することにし、さらに新しいものから番号をつけていくようにするには以下のようにすればいい。
<MTEntries> <div class="<mt:if name="__even__">even</mt:if><mt:if name="__odd__">odd</mt:if>"> [<$mt:getVar name="__counter__"$>] <$mt:entryTitle> </div> </MTEntries>
出力結果は以下のようになります。
[1] いちばんあたらしい
[2] にばんめでもまだあたらしい
[3] さんばんめでも現役
[4] よんばんめだって負けてない
上の4つのパターンにはまらない場合(3の倍数の繰り返し時とか)はopモディフィアを使ってvalueに値を入れて、割り切れる時に実行という風にやればできそう。似たような実装を以前はCounterプラグインを使ってやった気がするけど今後はこっちで行こう。
|
CMSとして使うMovable Typeガイドブック
posted with amazlet at 09.09.19
黒野 明子 荒木 勇次郎
翔泳社 売り上げランキング: 10792 |

