用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 header函数分析详解
Aug 06 PHP
php重定向的三种方法分享
Feb 22 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
php文件系统处理方法小结
May 23 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 PHP
java解析json方法总结
May 16 PHP
PHP数组基本用法与知识点总结
Jun 02 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
smarty简单应用实例
2015/11/03 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
javascript中xml操作实现代码
2011/11/21 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
js实现随机抽奖
2020/03/19 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Python的语言类型(详解)
2017/06/24 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
机械电子工程毕业生自荐信
2013/11/23 职场文书
应届生如何写自荐信
2014/01/05 职场文书
领导调研接待方案
2014/02/27 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
个人课题方案
2014/05/08 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
国庆节慰问信
2015/02/15 职场文书
研究生简历自我评
2015/03/11 职场文书
日元符号 ¥
2022/02/17 杂记