$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
function remaining_seconds($params, $smarty) {
$remain = $params['endtime'] - time();
if($remain >= 0){
return $remain . ' second(s)';
}else{
return 'done';
}
}
$smarty->registerPlugin('function','remaining', 'remaining_seconds', false, array('endtime'));
if (!$smarty->isCached('index.tpl')) {
// 从db获取$obj 并赋值...
$smarty->assignByRef('obj', $obj);
}
$smarty->display('index.tpl');
?>
模板index.tpl 内容是:
时间还有: {remaining endtime=$obj->endtime}
即使页面被缓存了,$obj的倒计时也还是会在每次页面刷新的时候改变。
endtime属性仅在第一次页面显示的时候,被从db里面读取出来并写入到模板,然后就一直是直接从缓存内读取了。