Для этого возьмем уже готовую функцию для склонения числительных на PHP, и зарегистрируем её в Smarty, чтобы можно было делать склонение числительных smarty.
//Немного модифицируем первоначальную функцию, чтобы она работала в Smarty function declOfNum($params) { $number=$params['n']; $titles=$params['t']; $cases = array (2, 0, 1, 1, 1, 2); return $number." ".$titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ]; } //а теперь зарегистрируем в Smarty $smarty->register_function("decl_of_num", "declOfNum");
Готово! Теперь будет работать склонение числительных smarty.
Вызывать будем вот так:
{$titles[0]='товар'} {$titles[1]='товара'} {$titles[2]='товаров'} {decl_of_num n=$count_of_goods t=$titles}