一、Smarty简明教程
1.安装演示
下载最新版本的Smarty-3.1.12,然后解压下载的文件。接下来演示Smarty自带的demo例子。 (1)下载地址:http://www.smarty.net/download
(2)在你的WEB服务器根目录下建立新目录,这里我在/var/www下创建yqting/目录,然后将解压之后的目录中的demo/和libs/目录复制到/var/www/yqting/目录下。
(3)这里要特别注意demo/目录下cache/和template_c/两个目录,。
chmod 777 cache/
chmod 777 template_c/
(4)启动apache。在浏览器中输入http://localhost/yqting/demo/index.PHP ,这样一个简单的Smarty demo就实现了。
2.Smarty目录结构
(1)以/var/www/yqting目录开始分析: yqting/
├── demo
│ ├── cache 缓冲文件存放目录
│ ├── configs 配置文件目录
│ ├── index.PHP
│ ├── plugins 自定义的一些实用插件
│ ├── templates 模板目录
│ └── templates_c 编译后的文件存放目录
└── libs
├── debug.tpl debug模板
├── plugins 自定义的一些实用插件
├── SmartyBC.class.PHP 支持Smarty 2兼容
├── Smarty.class.PHP Smarty类定义文件
└── sysplugins Smarty核心功能插件,不需要进行修改
(2)添加自己定义的插件
上述目录结构中,其实最核心的部分是libs/目录,同时这部分也是不允许修改的。
而要添加自己的插件,一种方法是将自己定义的插件放在libs/plugins/目录下,另一种方式是 单独创建一个自己plugins/目录,同时还要创建cache/、configs/、templates/和templates _c/目录,而且要保证cache/和templates_c/目录的可读写权限。
不难发现,其实上述例子中,demo/目录就是一个包含了自己定义的插件的完整目录。 我们可以参照demo/目录来实现自己的程序。
3.实现一个简单的例子
(1)在/var/www/yqting/下创建目录weibo/,然后在weibo/目录下创建cache/、 configs/、templates/和templates_c/目录,修改cache/和templates_c/目录的权限为可读写。 (2)新建一个模板文件:index.tpl,将此文件放在/var/www/yqting/weibo/templates目录下,代码如下:
<Metahttp-equiv="Content-Type" content="text/html;charset=gb2312">
username:{$Name}
这段代码很简单,有什么不明白的继续往下看,不要着急!每一个做显示的.tpl文件都会对应一个处理业务逻辑的.PHP文件,下面介绍这个.PHP文件。
(3)新建index.PHP,将此文件放在/var/www/yqting/weibo/下,代码如下:
assign("Name",$username); $smarty->display('index.tpl'); ?> 其中require使用的路径一定要正确,可以参照上面的目录结构看一下!
(4)在Smarty3中,Smarty类的构造函数中已经指定了template_dir、compile_dir 、config_dir和cache_dir,不需要再次指定。
(5) 在浏览器中输入http://localhost/yqting/weibo/index.PHP,就可以看到输出的信息username:Smarty 了。
二、解释smarty的程序
我们可以看到,smarty的程序部分实际就是符合PHP语言规范的一组代码,我们依次来解释一下: (1)/**/语句:
包含的部分为程序篇头注释。主要的内容应该为对程序的作用,版权与作者及编写时间 做一个简单的介绍,这在smarty中不是必需的,但从程序的风格来讲,这是一个好的风格。
(2)include_once语句:
它将安装到网站的smarty文件包含到当前文件中,注意包含的路径一定要写正确。
(3)$smarty = new Smarty():
这一句新建一个Smarty对象$smarty,简单的一个对象的实例化。
(4)$smarty->templates="":
这一句指明$smarty对象使用tpl模板时的路径,它是一个目录,在没有这一句时, Smarty默认的模板路径为当前目录的templates目录,实际在写程序时,我们要将这一 句写明,这也是一种好的程序风格。
(5)$smarty->templates_c="":
这一句指明$smarty对象进行编译时的目录。在模板设计篇我们已经知道Smarty是 一种编译型模板语言,而这个目录,就是它编译模板的目录,要注意,如果站点位于linux 服务器上,请确保 teamplates_c里定义的这个目录具有可写可读权限,默认情况下它的 编译目录是当前目录下的templates_c,出于同样的理由我们将其明确的写出来。
(6)