用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 取得瑞年与平年的天数的代码
Aug 10 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
php中日期加减法运算实现代码
Dec 08 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
php 常用的系统函数
Feb 07 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 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 array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python的dict,set,list,tuple应用详解
2014/07/24 Python
简述Python中的进程、线程、协程
2016/03/18 Python
python删除不需要的python文件方法
2018/04/24 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
Django 批量插入数据的实现方法
2020/01/12 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
解决python脚本中error: unrecognized arguments: True错误
2020/04/20 Python
python/golang 删除链表中的元素
2020/09/14 Python
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
SQL Server面试题
2013/04/04 面试题
成绩单公证书
2014/04/10 职场文书
爱国演讲稿400字
2014/05/07 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
vue3中的组件间通信
2021/03/31 Vue.js