用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 相关文章推荐
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
php smarty的预保留变量总结
Dec 04 PHP
关于php fread()使用技巧
Jan 22 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
Feb 05 PHP
php使用crypt()函数进行加密
Jun 08 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 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的数组与字符串的转换函数整理汇总
2013/07/18 PHP
sae使用smarty模板的方法
2013/12/17 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
jquery的颜色选择插件实例代码
2008/10/02 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
jQuery中extend函数简单用法示例
2017/10/11 jQuery
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
django使用多个数据库的方法实例
2021/03/04 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
如何设置Java的运行环境
2013/04/05 面试题
写求职信要注意什么问题
2014/04/12 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
成都人事代理协议书
2014/10/25 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技