用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录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
Laravel路由研究之domain解决多域名问题的方法示例
Apr 04 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
php 多继承的几种常见实现方法示例
Nov 18 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
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
js星星评分效果
2014/07/24 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
教大家使用Python SqlAlchemy
2016/02/12 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Python for循环中的陷阱详解
2018/07/13 Python
python中cPickle类使用方法详解
2018/08/27 Python
python的移位操作实现详解
2019/08/21 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
幼儿园家长评语
2014/02/10 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
项目合作意向书模板
2014/07/29 职场文书
模范教师事迹材料
2014/12/16 职场文书
学校党支部承诺书
2015/04/30 职场文书
趣味运动会简讯
2015/07/20 职场文书
总结Java对象被序列化的两种方法
2021/06/30 Java/Android
linux下安装redis图文详细步骤
2021/12/04 Redis
python中对列表的删除和添加方法详解
2022/02/24 Python
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL