配置:
下载Smarty文件放到你们站点中,然后创建两个文件夹
templates 存放模板文件
templates_c 存放编译后的文件
首先需要在项目中包含smarty类文件
require_once("./Smarty/Smarty.class.php");
语法:
$smarty = new Smarty(); //创建smarty实例对象$smarty
$smarty->templates("./templates"); //设置模板目录
$smarty->templates_c("./templates_c"); //设置编译目录
$smarty->cache("./cache"); //缓存目录
$smarty->cache_lifetime = 0; //缓存时间
$smarty->caching = true; //缓存方式
$smarty->left_delimiter = "{#"; //模板标签开始符
$smarty->right_delimiter = "#}"; //模板标签结束符
$smarty->register_function("self","test"); // 注册自定义函数test
$smarty->assign("name", "zaocha"); //进行模板变量替换
$smarty->display("index.htm"); //编译并显示位于./templates下的index.htm模板
模板调用:
{htmlspecialchars($fang)} // 直接使用php内置函数
{$fang|htmlspecialchars} // 变量调节器:将$fang变量作为htmlspecialchars函数的第一个参数
{time()} // 使用PHP内置函数
{ucfirst(strtolower($key))} // 也可以嵌套使用
{$key|strtolower|ucfirst} // 使用变量调节器,等同于上面一行代码
{assign var="key" value="lAmp"} // 使用Smarty定义一个变量
{$info|default:'Hello World'} //设置变量默认值:Hello World
{$smarty.get.id} // 输出全局变量$_GET
{$smarty.const.HOST} // 输出常量
{literal} // 将可能与smaryt产生冲突的代码都放到literal这个标签中
模板循环
1. foreach
代码如下
{foreach from=$array item=array_id}
{foreachelse}
{/foreach}
或者
{foreach $userdata as $k => $v }
{/foreach}
2. section
代码如下
{section name = name loop = $varName[, start = $start, step = $step, max = $max, show = true]}
name: section的名称,不用加$
$loop: 要循环的变量,在程序中要使用assign对这个变量进行操作。
$start: 开始循环的下标,循环下标默认由0开始
$step: 每次循环时下标的增数
$max: 最大循环下标
$show: boolean类型,决定是否对这个块进行显示,默认为true
section具有属性值
- index: 循环下标,默认为0
- index_prev: 当前下标的前一个值,默认为-1
- index_next: 当前下标的下一个值,默认为1
- first: 是否为第一下循环
- last: 是否为最后一个循环
- iteration: 循环次数
- rownum: 当前的行号,iteration的另一个别名
- loop: 最后一个循环号,可用在section块后统计section的循环次数
- total: 循环次数,可用在section块后统计循环次数
- show: 在函数的声明中有它,用于判断section是否显示
{section name=loop loop=$News}
{$News[loop].newsID}
{$News[loop].newsTitle}
{sectionelse}
空
{/section}