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


Posted in PHP onOctober 09, 2006

静态网站的模板框架

首先,我们象前面一样为所有的页面公用元素以及页面整体布局编写模板文件;然后从所有的页面删除公共部分,只留下页面内容;接下来再在每个页面中加上三行PHP代码,如下所示:

<?php

<!-- home.php -->
<?php require('prepend.php'); ?>
<?php pageStart('Home'); ?>

<h1>你好</h1>
<p>欢迎访问</p>
<img src="demo.jpg">
<p>希望你能够喜欢本网站</p>

<?php pageFinish(); ?>

?>

这种方法基本上解决了前面提到的各种问题。现在文件里只有三行PHP代码,而且没有任何一行代码直接涉及到模板,因此要改动这些代码的可能性极小。此外,由于HTML内容位于PHP标记之外,所以也不存在特殊字符的处理问题。我们可以很容易地将这三行PHP代码加入到所有静态HTML页面中。

require函数引入了一个PHP文件,这个文件包含了所有必需的与模板相关的PHP代码。其中pageStart函数设置模板对象以及页面标题,pageFinish函数解析模板然后生成结果发送给浏览器。

这是如何实现的呢?为什么在调用pageFinish函数之前文件中的HTML不会发送给浏览器?答案就在于PHP 4的一个新功能,这个功能允许把输出到浏览器的内容截获到缓冲区之中。让我们来看看prepend.php的具体代码:

<?php

require('class.FastTemplate.php');

function pageStart($title = '') {
GLOBAL $tpl;
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav'=> 'leftnav.htm' ) );
$tpl->assign('TITLE', $title);
ob_start();
}

function pageFinish() {
GLOBAL $tpl;
$content = ob_get_contents();
ob_end_clean();
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
}

?>

PHP 相关文章推荐
PHP开启gzip页面压缩实例代码
Mar 11 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
mysql数据库差异比较的PHP代码
Feb 05 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
CI框架Session.php源码分析
Nov 03 PHP
php显示时间常用方法小结
Jun 05 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
Dec 19 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
功能强大的PHP POST提交数据类
Jul 15 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
用PHP制作静态网站的模板框架(三)
Oct 09 #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
You might like
解析dedecms空间迁移步骤详解
2013/05/15 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
js正则相关知识点专题
2018/05/10 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python查看微信撤回消息代码
2018/06/07 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
建党伟业观后感
2015/06/01 职场文书
心灵捕手观后感
2015/06/02 职场文书
python​格式化字符串
2022/04/20 Python