1.引用
{include file="xxx.xxx" sitename="xxx"}
向引入的文件传入变量:
{include file="xxx.xxx" sitename="xxx"}
这时候可以在引入的文件中使用sitename这个变量,值为"xxx"
2.类与对象
用assign把类的对象以变量形式赋值到smarty模板中使用
php内
class My_Object{ function meth1($params){ return $params[0].'已经'.$params[1]; } } $myobj = new My_Object(); $smarty->assign('myobj',$myobj);tpl内
{$myobj->meth1(array('你','是别人的'))}
3.使用php函数
{<param1>|<php function name>:<param2>:<param3>:<param4>}例如:
字符替换函数
str_replace('被替换的',"替换为",被替换的变量)
例如将变量title的值“title”替换为”titlh“,并且保持首字母大写,无字符时默认显示"notitle"
{'e'|str_replace:'h':$articletitle|default:'notitle'|capitalize}
function test($params){ $p1 = $params['p1']; $p2 = $params['p2']; return 'p1='.$p1.',p2='.$p2; } $smarty->registerPlugin('function','f_test','test');
第一个参数为加入的函数类型(function、modifier、block),第二个为在smarty中的函数名,第三个为要添加的函数名
调用:
{f_test p1="test1" p2="test2"}实质:调用的时候将参数=值封装成一个数组传入函数,在函数内解包
5.制作、使用插件:
①在plugins目录下新建文件,例如新建一个function插件,则命名为function.xxx.php,函数的命名规范为smarty_function_xxx
则可以通过{xxx param1=... param2=...}来调用(忽视smarty_function部分)
②modifier类型(变量调节器)与之不同的在于参数不是数组,而是有几个写几个
③block类型(区块插件)
block插件名称为smarty_block_xxx,则使用方法为<xxx>...</xxx>
参数是打包成数组传入
注意有两个参数,第二个参数为block的内容
例如设计一个插件将一段话中的前多少个字符显示,并且替换全角逗号为半角 。
block.test2.php
<?php function smarty_block_test2($params, $content){ $replace = $params['replace']; $maxnum = $params['maxnum']; if($replace == 'true'){ $content = str_replace(',',',',$content); $content = str_replace(',',',',$content); } $content = substr($content,0,$maxnum); return $content; } ?>
xxx.tpl
{test2 replace='true' maxnum = 100} ,,,,,,,,, {/test2}输出结果 会全部替换为半角句号