Smarty模板引擎中如何调用自定义函数

一些模板引擎只能解析变量,Smarty模板引擎可以解析自定义函数。
一下引用:
好久不用smarty这个模板引擎了,今天改一个老系统,当时做的时候还是用的这个,现在要在模板里调用自定义的函数获取数据或者传值给自定义函数,让它自动返回相应格式的模板代码。又遇到了这个Smarty模板引擎中如何调用自定义函数的问题。记得当时做的时候,查了好多资料,才找到怎么在smarty里用自定义函数的,现在写个示例,记录一下。

比如现在要用自定义函数ssi返回一个符合ssi文件调用的代码

首先在smarty引擎初始化的时候注册一下这个自定义函数,如下:

<?php
//注:SITE_ROOT是定义的网站所在根目录
require_once (SITE_ROOT.’include/smarty/Smarty.class.php’);
//设定模版目录
$templates_dir = SITE_ROOT.’templates/’;
$compile_dir = SITE_ROOT.’data/compile/’;
$cache_dir = SITE_ROOT.’data/cache/’;
if(defined(‘IN_ADMIN’)) {
$dir = ‘admin’;
} else {
$dir = ‘site’;
}

$TPL = new Smarty;
//$TPL->debugging = TRUE;
$TPL->template_dir = $templates_dir.$dir;
$TPL->compile_dir = $compile_dir.$dir;
$TPL->cache_dir = $cache_dir.$dir;
$TPL->cache_lifetime = 0;
$TPL->caching = FALSE;
$TPL->left_delimiter = ‘<!–{‘;
$TPL->right_delimiter = ‘}–>’;
//$TPL->assign(‘SITE_ROOT’ , SITE_ROOT);
$TPL->register_function(“ssi”, “ssi”);//这里注册的自定义函数ssifile, 以上初始化smarty其它一些配置就不做解释了,不懂可以google
?>

然后写一个自定义函数

function ssi($params)
{
extract($params);
echo ‘<!–#include virtual=”‘.$filepath.’”–>’;
}

这样在模板引擎中就可以直接用你这个ssi函数了。

<!–{ssi filepath=”/ssi/header.html”}–>

这个函数经过smarty解析之后就是返回<!–#include virtual=”/ssi/header.html”–>

如果自定义函数的变量为多个,ssi后面跟多个变量就行了。

比如:<!–{block pageid=”index” blockno=”4〃}–>这个是自定义了一个block函数,里面是两个变量,当然相应的自定义函数里就可以直接用这两个变量了,因为已经用extract已经把smarty返回来的两个变量从数组的形式导入到当前的符号表了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值