smartyで配列を繰り返して表示するときは、foreachを使います。
foreachで配列を繰り返す中で、最初のループの時と最後のループの時になにかをするには、foreachに名前をつけて利用します。
{foreach from=$array item='item' name='ループ名'} {if $smarty.foreach.ループ名.first}初回ループ時の処理{/if} {if $smarty.foreach.ループ名.last}最後のループ時の処理{/if} {/foreach}
まず、name='ループ名'でループ名を設定します。
ループ名を設定したforeachの中で{$smarty.foreach.loop.first}
と記述すると、初回ループ時にtrue、初回ループでないときにはfalseとなります。
また、ループ名を設定したforeachの中で{$smarty.foreach.loop.last}
と記述すると、最後のループ時にtrue、最後のループでないときにはfalseとなります。
サンプル
<ul> {foreach from=$array item='item' name='loop'} {if $smarty.foreach.loop.first} <li>初回のループです</li> {elseif $smarty.foreach.loop.last} <li>最後のループです</li> {else} <li>初回のループでも最後のループでもありません</li> {/if} {/foreach} </ul>
上記の場合、例えば3つの値が入った配列の場合は、
<ul> <li>初回のループです</li> <li>初回のループでも最後のループでもありません</li> <li>最後のループです</li> </ul>
のように出力されます。
参考URL
- smarty:{foreach},{foreachelse}