用PHP制作静态网站的模板框架(三)


Posted in PHP onOctober 09, 2006

避免页面元素重复

“这确实不错”,你也许会想,“我的网站主要就是由大量的静态页面构成。现在我可以从所有页面中删除它们的公共部分,要更新这些公共部分实在太麻烦了。以后我就可以用模板制作出很容易维护的统一页面布局。”但事情并非这么简单,“大量的静态页面”道出了问题的所在。

请考虑上面的例子。这个例子实际上只有一个example.php页面,它之所以能够生成整个网站的所有页面,是因为它利用了URL中的查询字符串从数据库之类的信息源动态地构造出页面。

我们之中的大多数人所运行的网站并不一定都有数据库支持。我们的网站大多数由静态页面构成,然后用PHP在这里、那里加上一些动态功能,比如搜索引擎、反馈表单等。那么,如何在这种网站上应用模板呢?

最简单的方法是为每一个页面复制一份PHP文件,然后在每一个页面中把PHP代码里代表内容的变量设置成合适的页面内容。例如,假设有三个页面,它们分别是主页(home)、关于(about)和产品(product),我们可以用三个文件分别生成它们。这三个文件的内容都类如:

<?php

// home.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );

$content = "<p>欢迎访问</p>
<img src="demo.jpg">
<p>希望你能够喜欢本网站</p>";
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');

?>

显然,这种方法有三个问题:我们必须为每一个页面复制这些复杂的、牵涉到模板的PHP代码,这与重复公共页面元素一样使得页面难以维护;现在文件又混合了HTML和PHP代码;为内容变量赋值将变得非常困难,因为我们必须处理好大量的特殊字符。

解决这个问题的关键就在于分离PHP代码和HTML内容,虽然我们不能从文件中删除所有的HTML内容,但可以移出绝大多数PHP代码。

PHP 相关文章推荐
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 PHP
用PHP制作静态网站的模板框架(二)
Oct 09 #PHP
用PHP制作静态网站的模板框架(一)
Oct 09 #PHP
php的header和asp中的redirect比较
Oct 09 #PHP
文件上传的实现
Oct 09 #PHP
简单易用的计数器(数据库)
Oct 09 #PHP
用Php实现链结人气统计
Oct 09 #PHP
也谈 PHP 和 MYSQL
Oct 09 #PHP
You might like
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
树莓派升级python的具体步骤
2020/07/05 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
世界上最好的足球商店:Unisport
2019/03/02 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
校长岗位职责
2013/11/26 职场文书
护士演讲稿范文
2014/01/05 职场文书
小学生暑假感言
2014/02/06 职场文书
演讲稿开场白台词
2014/08/25 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
导游词之张家口
2019/12/13 职场文书
Python+Tkinter制作专属图形化界面
2022/04/01 Python
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技