用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 相关文章推荐
实用函数4
Nov 08 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
PHP中echo和print的区别
Aug 28 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
php简单统计中文个数的方法
Sep 30 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
tp5 sum某个字段相加得到总数的例子
Oct 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的5个入手程序
2006/11/23 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
Python实现发送email的几种常用方法
2014/08/18 Python
高效使用Python字典的清单
2018/04/04 Python
python爬取淘宝商品销量信息
2018/11/16 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
django的ORM模型的实现原理
2019/03/04 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
项目资料员岗位职责
2013/12/10 职场文书
银行工作检查书范文
2014/01/31 职场文书
小学教师节活动总结
2015/03/20 职场文书
新教师教学工作总结
2015/08/12 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
导游词之神仙居景区
2019/11/15 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL