用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数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
destoon各类调用汇总
Jun 20 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
php处理复杂xml数据示例
Jul 11 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 PHP
PHP实现时间日期友好显示实现代码
Sep 08 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
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
浅谈php自定义错误日志
2015/02/13 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
js 居中漂浮广告
2010/03/21 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
python中hashlib模块用法示例
2017/10/30 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
大专生的学习自我评价
2013/12/04 职场文书
高中生期末评语
2014/01/28 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
五一手机促销方案
2014/03/08 职场文书
机关出纳岗位职责
2014/04/03 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
nginx访问报403错误的几种情况详解
2022/07/23 Servers