用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实现文件上传二法
Oct 09 PHP
用PHP实现WEB动态网页静态
Oct 09 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
php分页思路以及在ZF中的使用
May 30 PHP
PHP中判断变量为空的几种方法小结
Nov 12 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
浅析PHP数据导出知识点
Feb 17 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 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
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
Python中logging模块的用法实例
2014/09/29 Python
Python3 replace()函数使用方法
2018/03/19 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python turtle 绘制太极图的实例
2019/12/18 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
游戏商店:Eneba
2020/04/25 全球购物
大学生党员自我批评
2014/02/14 职场文书
普通话宣传标语
2014/06/26 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
钱学森观后感
2015/06/04 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL