用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基础知识:控制结构
Dec 13 PHP
PHP编码规范-php coding standard
Mar 16 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
Yii操作数据库的3种方法
Mar 11 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
自制PHP框架之模型与数据库
May 07 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 PHP
PHP大文件分割分片上传实现代码
Dec 09 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
基于JQuery制作的产品广告效果
2010/12/08 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
python提取字典key列表的方法
2015/07/11 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python+opencv实现阈值分割
2018/12/26 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
个人借款协议书范本
2014/11/17 职场文书
2014企业年终工作总结
2014/12/23 职场文书
法定授权委托证明书
2015/06/18 职场文书
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL