什么是smarty?
Smarty是一个使用PHP写出来的PHP模板引擎,目的是要使用PHP程序同美工分离,使的程序员改变程序的逻辑内容时不会影响到美工的页面
设计,美工重新修改页面时不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。(也易于程序的多样式开发)
Smarty优点
1. 速度快:相对其他模板引擎。
2. 编译型:采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件
3 缓存技术:它可以将用户最终看到的HTML文件缓存成一个静态的HTML页
4. 插件技术:smarty可以自定义插件。
不适合使用smarty的地方
1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新
2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目
Smarty的配置
include_once("Smarty/Smarty.class.php"); //包含smarty类文件
$smarty = new Smarty(); //建立smarty实例对象$smarty
$smarty->config_dir="Smarty/Config_File.class.php"; // 目录变量
$smarty->caching=false; //是否使用缓存,项目在调试期间,不建议启用缓存
$smarty->template_dir = "./templates"; //设置模板目录
$smarty->compile_dir = "./templates_c"; //设置编译目录
$smarty->cache_dir = "./smarty_cache"; //缓存文件夹
//----------------------------------------------------
//左右边界符,默认为{},但实际应用当中容易与JavaScript相冲突
//----------------------------------------------------
$smarty->left_delimiter = "{";
$smarty->right_delimiter = "}";
Smarty的应用:变量,循环
$smarty->assign("模板变量", "值(数组/变量)");
$smarty->display("模板名称");
数组是最常用的方式,可以帮助我们循环列表,和快速访问打理数据,如果要循环数组我们可以使用Smarty内置的方法section或foreach。
foreach用法与在PHP中类似,同样是用来遍历数组。在实际操作中与section 功能一样。
$smarty->assign("模板变量", "数组");
{section name=s loop=$stu}
{$stu[s].name}
{sectionelse}
无内容
{/section}
{foreach from=$name item=id}
id: {$id}<br>
{/foreach}
{foreach key=j item=v from=$name }
{$j}: {$v}<br>
{/foreach}
include 的使用
{include file="header.htm"}
{include file="D:\www\head.htm"}
{include file='head.htm' title="Main Menu"}
IF条件语句的使用
{if $name=='ok'}
.....
{else}
.....
{/if}
literal strip 文本的处理技巧
literal 数据将被当作文本处理,此时模板将忽略其内部的所有字符信息. 该特性用于显示有可能包含大括号等字符信息的 javascript 脚本
{literal}
<script type="text/javascript">
.....
</script>
{/literal}