发新话题
打印

SMARTY介绍

SMARTY介绍

一、PHP模板系统
最开始的时候PHP开发是采用HTM代码嵌套PHP代码这种方式的。这种方式有很多的问题,比如页面逻辑难以看清楚,美工容易破坏开发人员的代码等等。

后来出现了模板系统。直观理解模板系统就是将PHP代码和网页代码分开。或者叫做将逻辑层和表现层分开。

PHP有很多的模板系统,比如phplib,fasttemplate,以及我们今天要说的smarty

二、为什么选择SMARTY?
选择Smarty的原因如下:

l 官方支持,可靠。

l 功能强大而又不失灵活。

l 编译型模板,保证了速度。

l 提供cache功能,可以提高网站的访问速度。

三、SMARTY的安装
Smarty的安装比较简单,步骤如下:

1. 下载最新版的Smarty,并解压缩。

2. 解压缩之后有一个libs目录,里面是smarty的核心程序,将它们拷贝到一个目录。

3. 在php程序的开始包含下面的语句:


4. 也可以将上面的语句保存为一个文件,在每一个php页面开始的时候包含就可以了。

四、SMARTY的工作模式
简单来讲,使用smarty开发的工作模式是这样:

一个PHP页面对应一个模板文件,其目录结构基本上一一对应。

PHP页面负责完成各种各样的逻辑,负责取出页面所需要的变量数据,赋值给模板系统,然后模板文件通过smarty的语法将变量展示出来。

在模板模板里面,基本上是循环结构,简单的if,else if判断。

有时候为了页面展示的需要,可以在php脚本里面负责完成表现层方面的一些逻辑,两者不是截然分开的。

五、SMARTY之PHP篇
PHP程序包含以下几个步骤:

1. 包含smarty的类库文件。

2. 生成smarty的实例,并设置好各种参数。

3. 处理各种逻辑,取出变量,进行赋值。

4. 显示模板文件。



六、SMARTY之模板篇
Smarty模板文件实际上就是html代码,只不过里面包含了一些smarty的标签而已。

l Smarty的标签都是使用{}包含起来。

l {$username}输出在php脚本里面赋值的变量 //$tpl->assign(“username”,”wwccss”)

l {$userinfo.groupid} 通过”.”形式来引用数组的元素。

l {foreach from=$userlist key=key item=user}{$user}{/foreach}循环输出一个数组里面的元素。

l {if $username==”wwccss”}<strong>wwccss</strong>{else}other{/if}简单的逻辑判断。

l {include file=”header.tpl”} 包含其他的文件。

l {$title|upper} 对变量进行处理。分别对应于php里面的函数。

l {literal}{/literal}在这个标签里面可以放置javascript的代码或者样式表的代码。

l samrty还提供了很多的函数:html_options html_radios html_select_date等等。

七、SMARTY之cache篇
cache是smarty区别于其他模板系统的一个很重要的地方:

1. 设置当前这个页面的缓存时间。

2. 设置当前这个页面的CacheID,模板编号可以使用“|”分组。

3. 判断当前页面有没有被缓存过,如果缓存过,则直接读取缓存文件,没有缓存或者缓存过期,则执行正常的逻辑查找数据,显示页面,同时生成缓存文件。

八、SMARTY之动态内容篇
如果一个页面打开了缓存功能,但同时又想显示动态的内容,可以使用insert函数。

1. 首先需要定义insert函数。


2. 在模板文件中这样定义
{insert name=Clickcount Itemname=News IdName=NewsID IdValue=24 script="Insert函数的文件 "}

九、相应资料
smarty的官方网站: http://smarty.php.net
smarty的中文手册http://www.phpres.com/help/manual/smarty_manual_zh/
smarty实例教程:    http://bbs.phpres.com/forumdisplay.php?fid=49&page=1

[ 本帖最后由 Ajax_chou 于 2007-7-10 19:49 编辑 ]
努力为phpres做贡献
时刻准备着,当机会来临时你就成功了
打好基础,增加社会经验
资深技术工程师是我的梦想
承接各种团体网站外包服务和各种it技术培训
准备申请AJAX版大,希望大家支持~~

TOP

请问

有误
3. 在php程序的开始包含下面的语句:
??????
4。

TOP

发新话题