PHP模板引擎Smarty使用入门

in PHP与其它Web技术

什么是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}
0 Comments