Ne znam da li će ti ovo pomoći, ali ja obično counter koristim pri generiranju topliste kada moram napisati broj uz npr. ime filma
1. Film
2. Drama
3. Blabla.
....
10. Film novi
Koristim section i unutar sectiona definiram rownum
{section name=film loop=$filmovi}
{$smarty.section.film.rownum} . {$filmovi[nazivFilma]}<br>
{/section}
Što se tiče nekog klasičnog while, gdje se čeka ispunjenje uvjeta, za to nisam siguran da postoji, ali uvijek možeš while petlju prebaciti u for petlju. Navedi primjer korištenja while petlje, pa da vidim koji problem te pati.