Möglichkeit einer Auflistung in Smarty
Wenn ihr z.B. ein Array in Smarty ausgeben wollt, welche durch ein Komma (“,”) getrennt ist, dann bietet sich folgende Möglichkeit an:
Die erste Zeile initialisiert einen Counter, danach wird eine foreach-Schleife durchlaufen. Mit “{counter}” wird der Zähler hochgezählt. Das “{if}” am Ende prüft einfach ob noch Items vorhanden sind, wenn ja, einfach ein Komma ausgeben.
{counter start="0" assign="tagCounter"}
{foreach from=$tagList item=tag}
{counter}
<a href="search.php?tagID={$tag.id}">{$tag.name|capitalize}</a>{if $tagCounter < count($tagList)},{/if}
{/foreach}
{foreach from=$tagList item=tag name=tagForeach}
<a href="search.php?tagID={$tag.id}">{$tag.name|capitalize}</a>{if !$smarty.foreach.tagForeach.last},{/if}
{/foreach}
Dank mahe gehts auch deutlich kürzer ![]()
Sicherlich gibt es noch bessere Lösungen aber was besseres wollte mir spontan nicht einfallen. Eine fertige Smartyfunktion scheint es nicht zu geben!
Du hast recht, da gibt’s noch was anderes
Schau mal da nach: http://www.smarty.net/manual/en/language.function.foreach.php
dem foreach noch ein name=foo verpassen
$smarty.foreach.foo.index => enthält den aktuellen Array-Index
$smarty.foreach.foo.last => ist TRUE wenn man beim letzten Array-Element angelangt ist