Маленькие хитрости

Заполняем массив параметров

Чтобы добавить в параметры целый массив, достаточно указать ссылку на него. Это работает быстрее, чем полное копирование :

$data['lang'] =& $language;
в шаблоне будем ссылаться так:
{$lang.Key}
{$lang.Another key}

Можно выводить поля объекта. Используем явное приведение типов:

$data['myobj'] = (array)$myobj;

Работаем с циклами

Выводим номер строки (если тег <ol> не устраивает).
В контроллере добавляем свой модификатор:

function counter(&$counter)
{
	if (is_null($counter)) $counter = 0;
	return ++$counter;
}
В шаблоне:
<!-- .FOREACH lines AS line -->
	<li>Line {$i|counter}: {@line}</div>
<!-- .END -->

Чтобы сделать "полосатый" список, добавим еще один модификатор:
В контроллере:

function even_odd($counter)
{
	return ($counter % 2 == 0)? 'even' : 'odd';
}
В шаблоне:
<!-- .FOREACH lines AS line -->
	<li class="{$i|counter|even_odd}">Line {$i}: {@line}</div>
<!-- .END -->
Конечно в таблице стилей надо описать классы even и odd.

Первую строку можно поймать так: пока counter не сработал в первый раз, счетчик не определен.
В шаблоне:

<!-- .FOREACH lines AS line -->
	<li class="{.IFNOT i}first {.END}{$i|counter|even_odd}">Line {$i}: {@line}</div>
<!-- .END -->
В таблице стилей описать класс first. (Cм. пример Table2)


See also