Być może sami wykombinowaliście większość o czym dzisiaj przeczytacie, a może jednak nie…
1. Odwołania do metod statycznych klasy będącej w przestrzeni nazw.
Nie możemy sobie od tak wywoływać metod klasy. Trzeba ją najpierw zarejestrować poprzez registerClass():
$smarty->registerClass('Logger', '\My\Beautiful\Logger');
a następnie w szablonie:
{Logger::logReport()}
2. Przetwarzanie szablonów bezpośrednio ze stringa.
Czasami przechowujemy kawałki szablonów w zmiennych i chcemy zwrócić wynik ich przetwarzania do zmiennej. Nic prostszego:
$result = $smarty->fetch('string:My name is {$name}');
3. Ładne grupowanie dużych liczb po 3 znaki.
{1000000|number_format:0:'':' '} zł
Da nam wynik 1 000 000 zł
4. Skrócony zapis tworzenia zmiennej w szablonie.
Wynik wywołania metody przypiszemy do zmiennej $my_var. Konieczne jest zachowanie kolejności: assign idzie drugie, nazwa zmiennej w „podwójnych pazurkach”:
{$object->method() assign="my_var"}
5. Tworzenie tablic asocjacyjnych w szablonie.
Nie wiedzieć czemu zapis Smartowi nie pasuje:
{assign var="my_arr" value=array('a' => 'aa', 'b' => 'bb')}
należy użyć sposobu znanego z tworzenia tablic w PHP 5.4:
{assign var="my_arr" value=['a' => 'aa', 'b' => 'bb']}
6. Bieżąca data.
To oczywiste, ale może komuś umknęło:
{$smarty.now|date_format:'%d.%m.%Y'}
Wynik 11.03.2013
7. Zaokrąglanie liczb.
Uwaga: Smarty nie jest od wykonywania obliczeń. Szablony powinny wyświetlać wyniki, a nie zajmować się logiką. Czujcie się ostrzeżeni ;-)
{math equation='round(my_val, 1)' my_val=7.95 format='%.1f'}
Wynik 8.0
8. Śledzenie aktualnej iteracji
Chcemy numerować wiersze od 1:
{foreach $array as $key => $val} {$val@iteration}<br> {/foreach}
Wynik:
1
2
3
…
9. Specjalne akcje dla szczególnych wierszy.
Zamiast gimnastykować się ze zliczaniem wierszy mamy do dyspozycji gotowe zmienne:
{foreach $array as $key => $val} {if $val@first eq true}pierwszy{/if} {$val} {if $val@last eq true}ostatni{/if} {/foreach}
Co trzeci wiersz:
{foreach $array as $key => $val} {if $val@iteration is div by 3}row{/if} {/foreach}
10. Użycie delimiterów w szablonie.
Jeśli koniecznie chcemy wyświetlić znaki { i } mamy 3 możliwości:
{literal} { } {/literal} {ldelim} {rdelim}
$smarty->left_delimiter = '[!'; $smarty->right_delimiter = '!]';
Ostatni sposób jest trochę hardcorowy, używać jeśli rzeczywiście wszędzie pełno znaków { i }.

O autorze