页面

2010年12月18日

Smarty多模板网站应用示例.

#wiki      在很多网站中,特别是一些论坛系统,往往支持用户根据自己的喜好选择不同的模板来浏览网站。使用Smarty 可以很方便的实现这个功能。本节将以一个多模板页面的实现方法为例,简要说明如何使用Smarty 实现一个多模板网站。


一、模板的设计


为了实现这个多模板页面,首先需要创建多个模板。这里,创建三个类似的模板,如下所示。


1.模板一
<html>
<head>
<title>模板1</title>
</head>
<body>
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=1">模板1</a> |
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=2">模板2</a> |
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=3">模板3</a>
<p align=CENTER><font color=RED>{$title}</font></p>
<hr>
{$content}
</body>
</html>

2.模板二
<html>
<head>
<title>模板2</title>
</head>
<body>
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=1">模板1</a> |
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=2">模板2</a> |
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=3">模板3</a>
<p align=CENTER><font color=GREEN>{$title}</font></p>
<hr>
{$content}
</body>
</html>


3.模板三
<html>
<head>
<title>模板3</title>
</head>
<body>
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=1">模板1</a> |
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=2">模板2</a> |
<a href="http://blog.163.com/star_verygood@yeah/blog/?model=3">模板3</a>
<p align=CENTER><font color=BLUE>{$title}</font></p>
<hr>
{$content}
</body>
</html>


这三个模板分别以model1.htm、model2.htm 和model3.htm 的文件名存放在templates 文件夹中,后面要编写的PHP 代码将根据用户的选择调用不同的模板。需要注意的是三个模板文件中的模板切换链接,这里将使用在地址栏传入参数的形式传入当前的用户对于模板的选择。

对于PHP 页面来说,一方面需要对模板中的变量进行合理的赋值,另一方面也要通过获取地址栏传入的参数来调用不同的模板。具体实现代码如下所示:


<?php
require 'libs/Smarty.class.php'; //包含Smarty 类库文件
$smarty = new Smarty; //创建一个新的Smarty 对象
$title = "Test";
$content = "This is a test!";
$smarty->assign("title",$title); //对模版中的变量赋值
$smarty->assign("content",$content); //对模版中的变量赋值
if(!isset($_GET['model'])) //根据参数选择不同的模板
{
$smarty->display('model1.htm');
}
else
{
if(file_exists('templates/'.'model'.$_GET['model'].'.htm')) //判断模板文件是否存在
{
$smarty->display('model'.$_GET['model'].'.htm');
}
else
{
echo "模板参数不正确!";
}
}
?>


上面代码中对于模板文件是否存在进行了判断,当用户选择的模板不存在时,页面将显示相应的错误提示。


总结:Smarty 模版通常应用在一些较大规模的网站或应用系统中。由于Smarty 能够将PHP 代码和HTML 的页面有效的分开,对项目的开发和维护时都有很大好处。除此之外,由于Smarty 模板更换的灵活性,也为网站的改版和升级提供了很大的便利。特别是对于需要提供多个模板的网站,使用Smarty 可以使程序设计变得更加简单。

没有评论: