用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语法(2)
Oct 09 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
PHP curl使用实例
Jul 02 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
php+redis实现消息队列功能示例
Sep 19 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
详解php反序列化
Jun 10 PHP
解决PhpStorm64不能启动的问题
Jun 20 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
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
input框中的name和id的区别
2016/11/16 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
微信小程序实现轮播图效果
2017/09/07 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
前端性能优化建议
2020/09/17 Javascript
对Python实现简单的API接口实例讲解
2018/12/10 Python
python dataframe NaN处理方式
2019/12/26 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
python 进程池pool使用详解
2020/10/15 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
旅游网创业计划书
2014/01/31 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS