В смарти можно использовать встроенные переменные
В смарти можно использовать встроенные переменные цикла вместо $i. Вот пример:
{* этот шаблон выведет 0|1, 1|2, 2|3, ... и т.д. *}
{foreach $arr as $a name=foo}
{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},
{/foreach}