1、 自定义函数(自定义标签)
1) php文件function定义函数
注册步骤(register_function()、register_block())
Tpl文件类似于html标签
<{title num=”10” }>
成对出现---块
<{tilte}>……..<{/title}>
2)当作插件
./plugins
*.function.*.php
Function smarty_function.
*.block.*.php
Function smarty_block.
扩展smarty标签功能模块,自己进行编辑
2、 内建函数
Include:包含子模板,子模板中也可以使用当前页声明的smarty变量;
Include(“head.tpl”);
config_load:界面的调整
<config_load file=”” section=”one”>
Capture: <{capture}> …… <{/capture}>
$smarty.capture.
If ..elseif …else /if: elseif中间不要出现空格
条件表达式不要加()
Foreach---foreach 关联数组 索引数据
From =“要循环的数组名” name=”name1” item=
变量:$smarty.foreach.name1.first last total
Cache:提高效率
*.php *.tpl
smarty--- 合并后编译 (php与html混合)
优点:省略了重新合并、编译的时间;
连接数据库不能省略
增加缓存:./cache/*.html
减少了访问数据库的次数
Display(“”,””)
$_GET[“”]
$_SERVER[“REQUST_URI”]
局部缓存
实时性要求比较高
例如:登陆用户名称
欢迎Amdin登陆到****
例如:时间日期
解决步骤: 自定义函数(自定义插件)
第一种:插件形式
1) 指定该函数名称nocache
2) 新建文件./plugins/block.nocache.php
内容:
<?php
function smarty_block_nocache($args, $content){
return $content;}
?>
3)*.php
….
$tpl->assign(“date,date(“H:i:s”));
….
*.tpl
<{nocache}><{$date}><{/nocache}>
所有插件默认被缓存、
Else{
if($tag_command==nocache){
$this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, false);}
Else{
$this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, true);
}
}
第二种:php文件内自定义函数并注册
*.php
$tpl->register_block(“nocache”,”fun1”,false);
function fun1($args,$content){return $content;}
$tpl->assign(“date”,date(“H:i:s”));
*.tpl
<{nocache}><{$date}><{/nocache}>
第三种:smarty内建函数insert
定义一个inser标签要使用的处理函数
函数名格式为:insert_xx(array $params, object &$smarty)
其中的xx是insert的name,也就是说,如果你定义的函数为insert_abc, 则模板中使用方法为{insert name=abc}参数通过
$params传入也可以做成insert插件,文件名命名为:insert.xx.php,函数命名为:smarty_insert_aa($params,&$smarty),xx定义同上