用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 相关文章推荐
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php绘制一个矩形的方法
Jan 24 PHP
php读取文件内容到数组的方法
Mar 16 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
微信接口生成带参数的二维码
Jul 31 PHP
thinkphp5框架扩展redis类方法示例
May 06 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 判断字符串中是否包含html标签
2014/02/17 PHP
PHP制作万年历
2015/01/07 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PDO::errorInfo讲解
2019/01/28 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python实现网站微信登录的示例代码
2019/09/18 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
主要的Ajax框架都有什么
2013/11/14 面试题
《动手做做看》教学反思
2014/04/09 职场文书
化工工艺设计求职信
2014/06/25 职场文书
IT工程师岗位职责
2014/07/04 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
开学典礼致辞
2015/07/29 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL