PHP Smarty配置类——封装Smarty配置,Smarty模板配置类的作用是载入Smarty类库,完成Smarty应用前的配置工作,包括设置模板文件存储路径、编译文件存储路径、缓存文件存储路径、配置文件存储路径和是否开启视图缓存。
PHP Smarty配置类 语法
require("libs/Smarty.class.php"); //包含Smarty.class.php 文件,从而导入Smarty 类库
class SmartyProject extends Smarty{ //编写SmartyConfig 类,使其继承自Smarty 类
function SmartyProject(){ //构造方法
this->template_dir = "./system/templates/"; //指定模板文件存储位置this->compile_dir = "./system/templates_c/"; //指定编译文件存储位置
this->config_dir = "./system/configs/"; //指定配置文件存储位置this->cache_dir = "./system/cache/"; //指定缓存文件存储位置
}
}
PHP Smarty配置类 示例
本示例使用Smarty模板配置类配置Smarty模板,实现网页的动静分离
本示例使用Smarty模板配置类配置Smarty模板,实现网页的动静分离。对PDO分页类中典型应用的实例实现网页的动静分离,即实现分页操作的执行代码与分页输出的HTML代码进行分离。其关键步骤如下:
(1)封装Smarty模板配置类。载入Smarty类库,编写SmartyConfig类,使其继承Smarty类,通过构造方法定义模板文件、编译文件、配置文件和缓存文件的存储位置。
(2)创建system.inc.php文件,实现类的实例化操作。其关键代码如下:
<?php
require("system.class.inc.php"); //包含数据库连接和操作类
require("system.smarty.inc.php"); //包含Smarty 模板配置类
connobj=new ConnDB("mysql","localhost","root","111","db_business");
//数据库连接类实例化conn=connobj->GetConnId(); //执行连接操作,返回连接标识admindb=new AdminDB(); //数据库操作类实例化
seppage=new SepPage(); //分页类实例化smarty=new SmartyProject(); //调用Smarty 模板
?>
(3)创建index.php文件,载入类的实例化文件,调用分页类中的方法完成数据库中数据的分页查询,并且将结果集赋给模板变量,最终指定模板页。其关键代码如下:
<?php
require("system/system.inc.php"); //包含配置文件
if(isset(_GET['page'])){ //定义分页变量page=_GET['page'];
}else{page=1;
}
sql =seppage->ShowData("select * from tb_commo order by sell,id desc",conn,2,page);
//执行分页查询操作
smarty->assign("hotarr",sql); //将查询结果赋给模板变量
smarty->assign('rst1_page',seppage->ShowPage("产品","个",_GET['page'],'',"a"));
//将分页超级链接赋给模板变量smarty->assign('title','Smarty 模板的动静分离'); //定义网页标题
$smarty->display("index.html"); //指定模板页
?>
(4)创建模板文件index.html,通过Smarty模板中的section语句循环输出模板变量传递的结果集,并且输出分页超级链接。其关键代码如下:
{section name=hot_id loop=hotarr}
<table width="636" height="134" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="145" rowspan="5" align="center" valign="middle"><img src=
"{hotarr[hot_id].pics}" width="90" height="100" alt="{hotarr[hot_id].name}"
style="border: 1px solid #f0f0f0;" /></td>
<td height="35">商品名称:{hotarr[hot_id].name}</td>
<td width="156" height="35">商品类别:{hotarr[hot_id].class}</td>
<td width="157">商品型号:{hotarr[hot_id].model}</td>
</tr>
…//省略了部分代码!
</table>
<hr style="border: 1px solid #f0f0f0;" />
{/section}