21.2 Smarty的安装配置

21.2 Smarty的安装配置

视频讲解:光盘TMlx21Smarty模板的安装配置.exe

21.2.1 Smarty的下载和安装

PHP没有内置Smarty模板类,需要单独下载和配置,而且Smarty要求服务器上的PHP版本最低为4.0.6。用户可以通过访问http://smarty.php.net/download.php下载最新的Smarty压缩包。本章使用的版本是Smarty-2.6.19。

将压缩包解压后,得到一个libs目录,其中包含了Smarty类库的核心文件,即smarty.class.php、smarty_Compiler.class.php、config_File.class.php和debug.html 4个文件,另外还有internals和plug-ins两个目录。复制libs目录到服务器根目录下,并为其重命名,一般该目录的名称为smarty或class等,这里改为smarty。至此,Smarty模板安装完毕。

注意

凡是在后面的章节中提到Smarty类包、Smarty目录等,都是这个重命名后的Smarty,即原libs目录。

21.2.2 第一个Smarty程序

使用Smarty模板不像Smarty手册或有些书籍中讲的那么复杂、烦琐。这里先实现第一个Smarty实例,并对过程进行讲解。对Smarty有了初步了解后,再学习Smarty的配置信息。

【例21.1】初步了解Smarty的使用过程。(实例位置:光盘TMsl211)

(1)新建一个程序目录,存放位置为“服务器地址/tm/sl/21/”,命名为1,表示为第一个实例。

(2)复制Smarty到目录1下,在Smarty目录下新建4个目录,分别是templates、templates_c、configs和cache。这时,例21.1的目录结构如图21.1所示。

图21.1 Smarty包的目录结构

(3)新建一个HTML静态页,输入数据。输入完毕后将文件保存到新建的templates目录下,并命名为index.html,实例代码如下:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>{$title}</title> </head> <body> {$content} </body> </html>

说明

代码中加粗的部分就是Smarty标签,大括号“{}”为标签的定界符,$title和$content为变量。21.3节中将会详细介绍,此处不再赘述。

技巧

这里使用.html作为模板文件的后缀,因为HTML网页在互联网中更容易被搜索引擎搜索到。

(4)回到上级目录,在目录1下新建一个.php文件,使用Smarty变量和方法对文件进行操作,输入完毕后保存为index.php,实例代码如下:

<?php /* 定义服务器的绝对路径 */ define('BASE_PATH', $_SERVER['DOCUMENT_ROOT']); /* 定义Smarty目录的绝对路径 */ define('SMARTY_PATH', 'TMsl211Smarty'); /* 加载Smarty类库文件 */ require BASE_PATH.SMARTY_PATH.'Smarty.class.php'; /* 实例化一个Smarty对象 */ $smarty = new Smarty; /* 定义各个目录的路径 */ $smarty->template_dir = BASE_PATH.SMARTY_PATH.'templates/'; $smarty->compile_dir = BASE_PATH.SMARTY_PATH.'templates_c/'; $smarty->config_dir = BASE_PATH.SMARTY_PATH.'configs/'; $smarty->cache_dir = BASE_PATH.SMARTY_PATH.'cache/'; /* 使用Smarty赋值方法将一对名称/方法发送到模板中 */ $smarty->assign('title', ’第一个Smarty程序’); $smarty->assign('content', 'Hello, Welcome to study 'Smarty'! '); /* 显示模板 */ $smarty->display('index.html'); ?>

这一步是Smarty运行最关键的步骤,主要进行了两项设置和两步操作。

加载Smarty类库:也就是加载Smarty.class.php文件,这里使用的是绝对地址。为了稍后在配置其他路径时不用输入那么长的地址字串,之前还声明了两个常量:服务器地址常量和Smarty路径常量,两个常量连接起来就是Smarty类库所在的目录。

保存新建的4个目录的绝对路径到各自的变量:在例21.1中的第(2)步曾创建了4个目录,这4个目录各有各的用途,如果没有配置目录的地址,那么服务器默认的路径就是当前执行文件所在的路径。除了上面两项必须设置的变量外,还可以改变很多Smarty参数值,如开启/关闭缓存、改变Smarty的默认定界符等,这些变量将在21.4.2节中介绍。

给模板赋值:设置成功后,需要给指定的模板赋值。assign就是赋值方法。

显示模板:一切操作结束后,调用display方法来显示页面。实际上,用户真正看到的页面是templates模板目录下的index.html模板文件,而作为首页的index.php,只是用来传递结果和显示模板。

打开IE浏览器,运行index.php文件。运行结果如图21.2所示。

图21.2 第一个Smarty程序

21.2.3 Smarty配置

下面详细讲解Smarty模板的配置步骤。

(1)确定Smarty目录的位置。因为Smarty类库是通用的,每一个项目都可能会使用到它,所以将Smarty存储在根目录下。

(2)新建4个目录templates、templates_c、configs和cache。其中目录templates存储项目的模板文件,该目录具体放置在什么位置没有严格的规定,只要设置的路径正确即可;目录templates_c存储项目的编译文件;目录configs存储项目的配置文件;目录cache存储项目的缓存文件。

(3)创建配置文件。如果要应用Smarty模板,就一定要包含Smarty类库和相关信息。将配置信息写到一个文件中,使用时只要include配置文件即可。配置文件config.php的代码如下:

<?php /* 定义服务器的绝对路径 */ define('BASE_PATH', $_SERVER['DOCUMENT_ROOT']); /* 定义Smarty目录的绝对路径 */ define('SMARTY_PATH', 'TMsl21Smarty'); /* 加载Smarty类库文件 */ require BASE_PATH.SMARTY_PATH.'Smarty.class.php'; /* 实例化一个Smarty对象 */ $smarty = new Smarty; /* 定义各个目录的路径 */ $smarty->template_dir = BASE_PATH.SMARTY_PATH.'templates/'; $smarty->compile_dir = BASE_PATH.SMARTY_PATH.'templates_c/'; $smarty->config_dir = BASE_PATH.SMARTY_PATH.'configs/'; $smarty->cache_dir = BASE_PATH.SMARTY_PATH.'cache/'; ?>

上述配置文件的参数说明如下。

BASE_PATH:指定服务器的绝对路径。

SMARTY_PATH:指定Smarty目录的绝对路径。

require:加载Smarty类库文件Smarty.class.php。

$smarty:实例化Smarty对象。

$smarty->template_dir:定义模板目录存储位置。

$smarty-> compile_dir:定义编译目录存储位置。

$smarty-> config_dir:定义配置文件存储位置。

$smarty-> cache_dir:定义模板缓存目录。

技巧

指定服务器绝对路径的目的是找到Smarty文件夹在服务器中的存储位置。这里有两种方法可以使用:第一种,直接指定绝对路径,如E:wampwww;使用这种方法来指定服务器的绝对路径,一旦服务器的绝对路径发生更改,就必须要修改配置文件,否则程序就会运行出错。第二种,通过全局变量$_SERVER['DOCUMENT_ROOT']来获取服务器的绝对路径,使用该方法不会因为服务器路径的更改而影响到程序的执行。推荐使用第二种方法定义服务器的绝对路径。

有关定界符的使用,开发者可以指定任意的格式,也可以不指定定界符,使用Smarty默认的定界符“{”和“}”。

至此,Smarty的配置讲解完毕。

下面介绍一下Smarty中的两个最为常用的方法。

1. assign方法

assign方法用于在模板被执行时为模板变量赋值。语法格式如下:

{assign var=" " value=" "}

其中,var是被赋值的变量名,value是赋给变量的值。

2. display方法

display方法用于显示模板,需要指定一个合法的模板资源的类型和路径,还可以通过第二个可选参数指定一个缓存号,相关的信息可以查看缓存。

void display (string template [, string cache_id [, string compile_id]])

其中,template指定一个合法的模板资源的类型和路径;cache_id为可选参数,指定一个缓存号;compile_id为可选参数,用于指定编译号。编译号可以将一个模板编译成不同版本使用。例如,可针对不同的语言编译模板。编译号的另外一个作用是,如果存在多个$template_dir模板目录,但只有一个$compile_dir编译后存档目录,这时可以为每一个$template_dir模板目录指定一个编译号,以避免相同的模板文件在编译后互相覆盖。相对于在每一次调用display方法时都指定编译号,也可以通过设置$compile_id编译号属性来一次性设定。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

21.2 Smarty的安装配置