用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中上传大体积文件时需要的设置
Oct 09 PHP
提升PHP执行速度全攻略(下)
Oct 09 PHP
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
不用数据库的多用户文件自由上传投票系统(2)
Oct 09 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
PHP批量生成图片缩略图的方法
Jun 18 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
php登录超时检测功能实例详解
Mar 21 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
PHP goto语句用法实例
Aug 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
mysql数据库差异比较的PHP代码
2012/02/05 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
prototype1.4中文手册
2006/09/22 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
python实现的登录和操作开心网脚本分享
2014/07/09 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
详解python运行三种方式
2019/05/13 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
Django分组聚合查询实例分享
2020/04/29 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
How TDD works
2012/09/30 面试题
自荐信格式
2013/12/01 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
党建工作汇报材料
2014/12/24 职场文书
大连导游词
2015/02/12 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
护士业务学习心得体会
2016/01/25 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
MySQL为id选择合适的数据类型
2021/06/07 MySQL
JavaScript函数柯里化
2021/11/07 Javascript