2 Viktor BartelС помощью register_function() не получается, т.к. надо делать проверку в {if}.
Возможно костыль, но работает.
$smarty = &new Smarty;
$smarty->template_dir = ROOT.'/tpls';
$smarty->compile_dir = ROOT.'/tpls_c';
$smarty->register_modifier('is_timeout', 'isTimeoutReached');
...
function isTimeoutReached($ts, $timeout=20)
{
return mktime(date('H', $ts), date('i', $ts)+$timeout, date('s', $ts), date('m', $ts), date('d', $ts), date('Y', $ts)) <=time();
}
Тогда уже в шаблоне можно делать проверку
{if $b.last_time_session|is_timeout}
{assign var="bgcolor" value="white"}
{else}
{assign var="bgcolor" value="#cef8c7"}
{/if}