php 框架 模板_用PHP制作静态网站的模板框架

news/2024/5/20 23:51:54/文章来源:https://blog.csdn.net/weixin_39884270/article/details/115093031

用PHP制作静态网站的模板框架

更新时间:2006年10月09日 00:00:00   作者:

模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。

提纲:

===================================

分离功能和布局

避免页面元素重复

静态网站的模板框架

===================================

分离功能和布局

首先我们来看看应用模板的两个主要目的:

分离功能(PHP)和布局(HTML)

避免页面元素重复

第一个目的是谈论得最多的目的,它设想的情形是:一组程序员编写用于生成页面内容的PHP脚本,同时另一组设计人员设计HTML和图形以控制页面的最终外观。分离功能和布局的基本思想就是使得这两组人能够各自编写和使用独立的一组文件:程序员只需关心那些只包含PHP代码的文件,无需关心页面的外观;而页面设计人员可以用自己最熟悉的可视化编辑器设计页面布局,无需担心破坏任何嵌入到页面的PHP代码。

如果你曾经看过几个关于PHP模板的教程,那么你应该已经明白模板的工作机制。考虑一个简单的页面局部:页面的上方是页头,左边是导航条,其余部分是内容区域。这种网站可以拥有如下模板文件:

模板示例
{HEADER}
{LEFTNAV}{CONTENT}

sitelogo.jpg

Foo

Bar

可以看出页面如何由这些模板构造而成:main模板控制着整个页面的布局;header模板和leftnav模板控制着页面的公共元素。花括号“{}”里面的标识符是内容占位符。使用模板最主要的好处在于界面设计者能够按照自己的意愿编辑这些文件,比如设置字体、修改颜色和图形,或者完全地改变页面的布局。界面设计者可以用任何普通HTML编辑器或者可视化工具编辑这些页面,因为这些文件都只包含HTML代码,没有任何PHP代码。

PHP代码全部保存到单独的文件中,这个文件也就是由页面URL实际调用的文件。Web服务器通过PHP引擎解析该文件,然后把结果返回给浏览器。一般地,PHP代码总是动态地生成页面内容,比如查询数据库或者执行某种计算等。下面是一个例子:

// example.php

require('class.FastTemplate.php');

$tpl = new FastTemplate('.');

$tpl->define( array( 'main' => 'main.htm',

'header' => 'header.htm',

'leftnav' => 'leftnav.htm' ) );

// 此处的PHP代码设置$content使其包含合适的页面内容

$tpl->assign('CONTENT', $content);

$tpl->parse('HEADER', 'header');

$tpl->parse('LEFTNAV', 'leftnav');

$tpl->parse('MAIN', 'main');

$tpl->FastPrint('MAIN');

?>

这里我们使用的是流行的FastTemplate模板类,但其基本思路对于其他许多模板类来说都一样。首先你实例化一个类,告诉它到哪里去寻找模板文件以及哪一个模板文件与页面的哪部分对应;接下来是生成页面内容,把结果赋予内容的标识符;然后,依次解析各个模板文件,模板类将执行必要的替换操作;最后把解析结果输出到浏览器。

这个文件完全由PHP代码构成,不包含任何HTML代码,这是它最大的优点。现在,PHP程序员可以集中精力编写生成页面内容的代码,而不必为了如何生成HTML去正确地格式化最终页面而担心。

你可以使用这种方法和上面的文件构造出一个完整的网站。如果PHP代码是以URL中的查询字符串为基础生成页面内容,例如http://www.foo.com/example.php?article=099,你可以据此构造出一个完整的杂志网站。

很容易看出采用模板还有第二个好处。如上例所示,页面左边的导航条单独保存为一个文件,我们只需编辑这一个模板文件就可以改变网站所有页面左边的导航条。

避免页面元素重复

“这确实不错”,你也许会想,“我的网站主要就是由大量的静态页面构成。现在我可以从所有页面中删除它们的公共部分,要更新这些公共部分实在太麻烦了。以后我就可以用模板制作出很容易维护的统一页面布局。”但事情并非这么简单,“大量的静态页面”道出了问题的所在。

请考虑上面的例子。这个例子实际上只有一个example.php页面,它之所以能够生成整个网站的所有页面,是因为它利用了URL中的查询字符串从数据库之类的信息源动态地构造出页面。

我们之中的大多数人所运行的网站并不一定都有数据库支持。我们的网站大多数由静态页面构成,然后用PHP在这里、那里加上一些动态功能,比如搜索引擎、反馈表单等。那么,如何在这种网站上应用模板呢?

最简单的方法是为每一个页面复制一份PHP文件,然后在每一个页面中把PHP代码里代表内容的变量设置成合适的页面内容。例如,假设有三个页面,它们分别是主页(home)、关于(about)和产品(product),我们可以用三个文件分别生成它们。这三个文件的内容都类如:

// home.php

require('class.FastTemplate.php');

$tpl = new FastTemplate('.');

$tpl->define( array( 'main' => 'main.htm',

'header' => 'header.htm',

'leftnav' => 'leftnav.htm' ) );

$content = "

欢迎访问

%5C%22demo.jpg%5C%22

希望你能够喜欢本网站

";

$tpl->assign('CONTENT', $content);

$tpl->parse('HEADER', 'header');

$tpl->parse('LEFTNAV', 'leftnav');

$tpl->parse('MAIN', 'main');

$tpl->FastPrint('MAIN');

?>

显然,这种方法有三个问题:我们必须为每一个页面复制这些复杂的、牵涉到模板的PHP代码,这与重复公共页面元素一样使得页面难以维护;现在文件又混合了HTML和PHP代码;为内容变量赋值将变得非常困难,因为我们必须处理好大量的特殊字符。

解决这个问题的关键就在于分离PHP代码和HTML内容,虽然我们不能从文件中删除所有的HTML内容,但可以移出绝大多数PHP代码。

静态网站的模板框架

首先,我们象前面一样为所有的页面公用元素以及页面整体布局编写模板文件;然后从所有的页面删除公共部分,只留下页面内容;接下来再在每个页面中加上三行PHP代码,如下所示:

你好

欢迎访问

demo.jpg

希望你能够喜欢本网站

?>

这种方法基本上解决了前面提到的各种问题。现在文件里只有三行PHP代码,而且没有任何一行代码直接涉及到模板,因此要改动这些代码的可能性极小。此外,由于HTML内容位于PHP标记之外,所以也不存在特殊字符的处理问题。我们可以很容易地将这三行PHP代码加入到所有静态HTML页面中。

require函数引入了一个PHP文件,这个文件包含了所有必需的与模板相关的PHP代码。其中pageStart函数设置模板对象以及页面标题,pageFinish函数解析模板然后生成结果发送给浏览器。

这是如何实现的呢?为什么在调用pageFinish函数之前文件中的HTML不会发送给浏览器?答案就在于PHP 4的一个新功能,这个功能允许把输出到浏览器的内容截获到缓冲区之中。让我们来看看prepend.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');

}

?>

pageStart函数首先创建并设置了一个模板实例,然后启用输出缓存。此后,所有来自页面本身的HTML内容都将进入缓存。pageFinish函数取出缓存中的内容,然后在模板对象中指定这些内容,最后解析模板并输出完成后的页面。

ec4720013006975b35d62a25282e8c08.gif

这就是整个模板框架全部的工作过程了。首先编写包含了网站各个页面公共元素的模板,然后从所有页面中删除全部公共的页面布局代码,代之以三行永远无需改动的PHP代码;再把FastTemplate类文件和prepend.php加入到包含路径,这样你就得到了一个页面布局可以集中控制的网站,它有着更好的可靠性和可维护性,而且网站级的大范围修改也变得相当容易。

本文下载包包含了一个可运行的示例网站,它的代码注释要比前面的代码注释更详细一些。FastTemplate类可以在http://www.thewebmasters.net/找到,最新的版本号是1.1.0,那里还有一个用于保证该类在PHP 4中正确运行的小补丁。本文下载代码中的类已经经过该补丁的修正。

相关文章

1a1b05c64693fbf380aa1344a7812747.png

如何在PHP中使用Oracle数据库(1)...2006-10-10

4f55910a645b073bc4fc65dc10dc14bd.png

php中处理模拟rewrite 效果...2006-12-12

0ea3c7666119d5615e582f823fb3fad6.png

今天小编就为大家分享一篇关于PDO::setAttribute讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-01-01

4f96a78db829b1556ff16de21e013c7a.png

PHP 和 XML: 使用expat函数(二)...2006-10-10

8cc1031babc6aff2319f1c6af8544aa0.png

用这么久了,竟然PHP的基本符号都没有认全,看到@号还查了半天才知道什么意思.把基本符号列表帖一下吧,需要的朋友可以参考~2010-03-03

0c932a99bb7b6f23c937db507070cc7b.png

PHP与javascript的两种交互方式...2006-10-10

cca732bf65a93ed2ec0ac80c638460fe.png

PHP初学入门...2006-11-11

2d9f31f2af7b675a3d153d2b7f1035a7.png

PHP是一门高效的网络编程语言,由于它具有编写灵活、运行快速等优点,迅速成为Web程序员的首选语言。前不久的一份权威调查表明,现在已经有31.6%的网站使用PHP作为主要的服务器端编程语言。2008-10-10

b452cee8ec5cd9e58ab98eba17281e59.png

教你IIS6的PHP最佳配置方法...2006-09-09

f4838ec7e2d4da28e0b57d4e852dadd4.png

php利用adodb分页实现代码2009-03-03

最新评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_721130.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 来访者,php获取来访者在搜索引擎搜索某个关键词,进入网站

php获取来访者在搜索引擎搜索某个关键词&#xff0c;进入网站​​​代码入下&#xff1a;<?php //获取来访者在搜索引擎搜索某个关键词&#xff0c;进入网站$word search_word_from();if(!empty($word[keyword])){echo 关键字&#xff1a;.$word[keyword]. 来自&#xff1…

搜索网页显示找不到服务器,显示:DNS 查找失败,因此找不到 x 的服务器。DNS 是将网站名称解析为互联网地址的网络服务...

【Win7解决方案】【问题描述】&#xff1a;通过网页无法下载文件【原因分析】&#xff1a;1. 下载资源问题&#xff1b;2. DNS设置问题&#xff1b;3. Internet设置问题。【简易步骤】&#xff1a;方案二&#xff1a;打开【网络图标】—打开【打开网络与共享中心】—【更改适配…

奇奇seo优化软件_湖南seo优化软件效果好

湖南seo优化软件效果好 hysdfb湖南seo优化软件效果好 .权力迁移假使有的日搜索引站位于&#xff0c;站使用地域的权限&#xff0c;关于页的权限&#xff0c;期盼各种的方法增加地域的权限和页的权限来需要&#xff0c;你保留那个。站虽然现在搜索引擎拟定的条条框框越来越多&am…

leetcode网站服务器,LeetCode 1606. 找到处理最多请求的服务器

题目描述你有 k 个服务器&#xff0c;编号为 0 到 k-1&#xff0c;它们可以同时处理多个请求组。每个服务器有无穷的计算能力但是 不能同时处理超过一个请求。请求分配到服务器的规则如下&#xff1a;第 i(序号从 0 开始)个请求到达。如果所有服务器都已被占据&#xff0c;那么…

新手学电脑入门教程_SEO必读:seo新手入门,如何快速起步?

点击“蓝字”免费学习“SEO知识”SEO必读SEO中文译为“搜索引擎优化”SE0必读&#xff1a;一个专注分享SEO知识的平台&#xff0c;带给你更多关于SEO的“优化技巧”&#xff01;学seo一定要有正确的思路&#xff0c;做符合规则的事情&#xff01;类似于“7天速成班”这类的商业…

php+mysql动态网站开发_滨州文化传媒网站php网站开发保证效果

山东百猫搜网络技术有限公司为您详细解读grGoqf滨州文化传媒网站php网站开发保证效果的相关知识与详情&#xff0c;通过合理的、有新意的页面规划&#xff0c;出格是主页设想&#xff0c;才能够将网页的内容完美地呈如今阅读者面前。表格及层排版是网页设想中的重要排版方式&am…

wordpress acf字段 不同样式_如何快速一键搬家WordPress网站(All in One WP Migration插件)...

迁移或是搬家WordPress站点通常是一件很麻烦的事情&#xff0c;需要一定的技术。无论是在两个不同的远程Web服务器之间&#xff0c;还是在开发服务器和生产服务器之间&#xff0c;还是从生产服务器到本地&#xff0c;您都可以通过许多方向进行迁移。在大多数情况下&#xff0c;…

网站木马检测_检测病毒,用这几个网站就够了

平时我们上网的时候经常需要下载各种各样的文件&#xff0c;但文件下载多了&#xff0c;难免会遇到一些可疑软件&#xff0c;一旦这些软件包含病毒&#xff0c;电脑轻则多几个软件&#xff0c;重则破财。而你想让电脑上的杀毒软件为你单独检测某个文件的时候却又发现&#xff0…

linux垃圾回收,垃圾回收算法_Linux编程_Linux公社-Linux系统门户网站

垃圾收集算法标记-清除算法最基础的收集算法是”标记-清除”(Mark-Sweep)算法&#xff0c;算法分为“标记”和“清除”两个阶段&#xff1a;首先标记出所有需要回收的对象&#xff0c;在标记完成后统一回收所有被标记的对象。标记-清除算法主要有两个不足&#xff1a;一个是效率…

网站SEO优化是什么(概念解释与SEM的区别)

SEM SEM&#xff08;搜索引擎营销&#xff09;基本思想是让用户发现信息&#xff0c;并通过(搜索引擎)搜索点击进入网站/网页进一步了解他所需要的信息。SEM的方法包括搜索引擎优化(SEO)、付费排名、精准广告以及付费收录 SEO SEO三大要素&#xff1a;标题、关键词、描述SEO是指…

php网站怎么找控制器,php控制器的方法在哪

控制器(Controller)的作用通常是在获取模型(Model)中数据并交给视图(View)去显示&#xff0c;那开发中我们应该如何去写呢&#xff1f;1.创建Controller的类文件,我这里文件名为MatchController.class.php(推荐学习&#xff1a;PHP编程从入门到精通)<?php /*** 比赛操作相关…

请你谈谈网站是如何访问的!

1.输入一个域名&#xff0c;回车 2.Windows系统会检查本机的&#xff1a;C:\Windows\System32\drivers\etc\hosts 配置文件下有没有这个域名映射 如果有&#xff0c;直接返回对应的ip地址&#xff0c;在这个地址中&#xff0c;有需要访问的web应用程序&#xff0c;可以直接访…

Scrapy爬取知名网站的图书信息

本文用 Scrapy 爬虫框架爬取专门供爬虫初学者训练用的网站&#xff1a;http://books.toscrape.com/ 打开虚拟环境创建项目文件打开控制台输入workon py3scrapy进入虚拟环境所在盘我的是E盘创建项目文件输入scrapy startproject demo创建的项目文件叫demo查看项目目录下的文件输…

Scrapy爬取知名技术网站文章并保存为Json格式

之前是爬取单个页面的内容&#xff0c;今天对所有文章进行爬取。 所有文章文章的地址&#xff1a;http://blog.jobbole.com/all-posts/ 对所有文章的URL进行提取提取第一页URL用 Request 库对提取的URL交给scrapy下载然后调用自己定义的解析函数提取下一页URL 把封面图下载下来…

Scrapy爬取知名技术网站文章并保存到MySQL数据库

之前的几篇文章都是在讲如何把数据爬下来&#xff0c;今天记录一下把数据爬下来并保存到MySQL数据库。 文章中有讲同步和异步两种方法。 所有文章文章的地址&#xff1a;http://blog.jobbole.com/all-posts/ 对所有文章的URL进行提取提取第一页URL用 Request 库对提取的URL交…

My-Blog搭建过程:如何让一个网站从零到可以上线访问

文章简述 5月13号的时候&#xff0c;上线了自己的个人博客网站&#xff1a;http://blog.hanshuai.xin&#xff0c;随后在平台上发布了一篇关于My-Blog的介绍博客《DockerSpringBootMybatisthymeleaf的Java博客系统开源啦》&#xff0c;有几位朋友在浏览网站之后也有私信问过我&…

收集45个实用的免费LOGO在线制作网站

有人说“即使一把火把可口可乐烧得精光&#xff0c;它也能凭借着它的LOGO东山再起。“当然了&#xff0c;至于有没有人说过&#xff0c;我们无法考证。但是这句话充分说明了一个LOGO所能发挥的作用。 LOGO对对大部分网站来说应该是不可或缺的一部分&#xff0c;对网站的拥有公司…

Windows下搭建Wordpress博客网站

一&#xff1a;安装wamp Windows下的ApacheMysql/MariaDBPerl/PHP/Python&#xff0c;一组常用来搭建动态网站或者服务器的开源软件&#xff0c;本身都是各自独立的程序&#xff0c;但是因为常被放在一起使用&#xff0c;拥有了越来越高的兼容度&#xff0c;共同组成了一个强大…

阿里云+wordpress搭建个人博客网站【小白专用的图文教程】

【声明】 欢迎转载&#xff0c;但请保留文章原始出处→_→ 生命壹号&#xff1a;http://www.cnblogs.com/smyhvae/ 文章来源&#xff1a;http://www.cnblogs.com/smyhvae/p/4965163.html 【正文】 在阿里云上搭建使用个人博客主要分为以下几个步骤&#xff1a; 1、购买阿…

Nodejs学习笔记(七)--- Node.js + Express 构建网站简单示例

目录 前言新建项目、建立数据库以及其它准备工作 新建express ejs 项目&#xff1a;sampleEjs创建数据库修改package.json文件,安装session和mysql模块样式和JQuery文件清理项目冗余文件&#xff0c;并添加监听 规划路由&#xff0c;并新建相关文件实现登录和注册需要的数据访…