{foreach}や{section}関数の中で使用することを前提とした「繰り返し」をする関数なんだが、その属性に[name]属性というのがある。

これがいまひとつどういう利便性があるのかわからないので、グーグル大先生に聞いてみると、以下のようなコードがあるよと言われた。(番号は行番号)

1 {cycle name="aa" values="a,b,c,d,e,f,0"}
2 {cycle name="aa"}
3 {cycle name="aa"}
4 {cycle name="aa"}
5 {cycle name="aa"}
6 {cycle name="aa"}

これを{foreach}に入れて実行してみた結果

a b c d e f 0 a b c d e f 0 a b c d e f 0 a b c d e f 0 a b c d e f 0 a

どう処理されているかというと、一回目のループで 1のa→2のb→3のc→4のd→5のe→6のf と処理され、2回目のループで戻ってくる。

すると 1の0→2のa→3のb→・・・・と処理されるみたい。

name属性が同じ{cycle}では、先に処理されている{cycle}の状態が引き継がれるということだろう。

ちなみに

{cycle name="aa" values="a,b,c,d,e,f,0"}
{cycle name="bb"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}

とすると

a
Warning: Smarty error: cycle: missing 'values' parameter in Smarty.class.php on line 1088
b c d e f
Warning: Smarty error: cycle: missing 'values' parameter in Smarty.class.php on line 1088
0 a b c d
Warning: Smarty error: cycle: missing 'values' parameter in Smarty.class.php on line 1088
e f 0 a b
Warning: Smarty error: cycle: missing 'values' parameter in Smarty.class.php on line 1088
c d e f 0
Warning: Smarty error: cycle: missing 'values' parameter in Smarty.class.php on line 1088
a b c d e
Warning: Smarty error: cycle: missing 'values' parameter in Smarty.class.php on line 1088
f 0 a b

と返ってくる。ま、当然といえば当然か。。。

おすすめの記事