用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 相关文章推荐
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
php导入导出excel实例
Oct 25 PHP
如何让CI框架支持service层
Oct 29 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
PHP获取学生成绩的方法
Nov 17 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
制作美丽的拉花
2021/03/03 冲泡冲煮
PHP strtok()函数的优点分析
2010/03/02 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
Python对切片命名的实现方法
2018/10/16 Python
python并发和异步编程实例
2018/11/15 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
美国玩具公司:U.S.Toy
2018/05/19 全球购物
党组织公开承诺书
2014/03/29 职场文书
聘用意向书范本
2014/04/01 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
健康教育主题班会
2015/08/14 职场文书
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫