$smarty->register_function('dateline', 'handle_dateline'); 
dateline 是在模板里使用的名字

{dateline  time="$time" format="Y-m-d"}
而不是
{handle_dateline  time="$time" format="Y-m-d"}
呵呵,自己找罪受function handle_dateline($params, &$smarty) {}
$params 传入的参数数组,比如上例中就有两个元素
函数体你可能会这样写
extract($params);
echo date($format,$time);$smarty smarty 对象本身,因为你有可能需要在函数体内访问 $smarty 的属性和方法

解决方案 »

  1.   

    hello,这样说的话,
    $smarty->register_function('dateline', 'handle_dateline'); 
    并没有传递任何参数给function handle_dateline($params, &$smarty) {}??
    注册函数上面的语句,会不会导致函数 “function handle_dateline($params, &$smarty) {} ” 执行?
      

  2.   

    参数是在调用时候才会传递的 ,也就是说跟注册函数无关。那注册函数到底有什么用??难道只是为了让它的值在tpl中显示吗? 
      

  3.   

    注册的目的是让 smarty 找到他,不然就会出错!
      

  4.   

    说白了,它就是注册一个函数,让你在tpl调用。