2012年11月16日金曜日

Smartyテンプレートならeven/oddの設定が簡単にできるということ

表を作った時に「奇数列と偶数列で背景の色を変えたい」と思うことがよくあります。
プログラムなら、現在処理中の行数が2で割り切れるかどうかで奇数か偶数かを判定できます。
が、この計算を毎回やるのではちょっと骨がおれます。

Smartyでも同じことは可能なのですが。Smartyの場合はいちいち計算させる必要はないみたいなんです。

{cycle}関数による制御

{cycle}関数は、一つの決まった順番に関数に設定されたvalues値を出力するものです。
例えばこんな感じでしょうか。

{section start=0 loop=10 name=TEST}
<p class="{cycle name=EVEN_ODD values='even,odd'}">リスト</p>
{/section}

.even { background-color: #f00; }
.odd { background-color: #00f; }

上記の例は、奇数の段落の背景を赤色に、偶数の段落の背景を青色の変更してます。
背景色の制御はCSSでおこなってます。
こういう風に設定すれば、table要素だろうとリスト要素だろうと容易に奇数/偶数列の背景色(もっと言えば様々なスタイル)を制御できます。
いちいち奇数と偶数の計算をしなくていい点で便利だと思いますね。

PHP上で計算した方がいい場合もある…気がする

Smartyテンプレート上で処理して楽できるならそれに越したことはないということで。
Ajaxなんかで複雑な処理をしてる場合なんかだと、PHP上で計算した方がいい場合もでてくるんじゃないかと思います。
その辺りは臨機応変に対応すべし、というとこでしょうね。

参考資料:

PHPプロ!-Smartyマニュアル {cycle}

0 件のコメント:

コメントを投稿