用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 相关文章推荐
生成缩略图
Oct 09 PHP
php遍历目录viewDir函数
Dec 15 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
php记录日志的实现代码
Aug 08 PHP
PHP小教程之实现双向链表
Jun 12 PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
php遍历树的常用方法汇总
Jun 18 PHP
比较完整的微信开发php代码
Aug 02 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 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
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
JavaScript arguments 多参传值函数
2010/10/24 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
Python入门篇之函数
2014/10/20 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
应届毕业生如何写求职信
2014/02/16 职场文书
大型公益活动策划方案
2014/08/20 职场文书
团组织关系介绍信
2019/06/24 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏