用libTemplate实现静态网页的生成

2016-01-29 14:43 1 1 收藏

用libTemplate实现静态网页的生成,用libTemplate实现静态网页的生成

【 tulaoshi.com - PHP 】

 

作者:iwind

原来在dev-club发表的一篇文章,将怎么用模板处理程序PHPlib 中的template.inc实现静态网页的生成,呵呵,居然被列入精华,并被多个网站转载,想来这是荣幸。其实网上这方面的东西很多了,我上此发布的所谓IAMS( iwind 文章管理系统),里面也有,有心人可以看一下。下面我只是简要在总结一次。

现在一般说生成静态网页的方法有三种,一个是配置服务器,大家可以到http://www.devarticles.com/c/b/PHP/ 去找找看,对于这个很多地方都有的。另外一个是用ob_函数控制输出。方法如下:先用ob_start();打开输出缓冲器,然后是对数据的分析,操作等等,跟着用ob_get_contents();获取缓冲区的内容,然后再写入文件。根据这个步骤,可以写出以下程序:
   <?php
   ob_start();
   //主体部分,数据操作,处理,输出等等。。。
   require”global.php”;
   mysql_connect(“localhost”,”root”,””);
   …..
   //获取缓冲区内容
   $contents=ob_get_contents();
   //如果不想输出任何东西,可以加上这句
   ob_end_clean();
   //写入目的文件
   $fp=@fopen($targetFile,”w+”) or die(“打开文件时出错”);
   fwrite($fp,$contents);
?

这样就把这个动态页面的内容写入了静态页面,$targetFile.像有的网站首页内容很多,要调用n多个查询语句时,不妨定时生成静态网页,既大幅提高了访问速度,也减轻了服务器负担。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

你可以看出来,我用ob_只是处理单个页面,对于批量写入或更新多个页面,这个方法就不行了。这就是我要讲的第三种方法,用模板。模板是个好东东,现在大家都或多或少在用它,建议还不会简单模板处理的网友,花点时间去学它,一般的模板处理程序都很简单的。用模板实现静态网页的生成是非常简单的,方法就是获取分析结果,把分析结果写入文件。下面就以PHPlib中的template.inc来谈谈如果用模板生成静态网页。

一, 修改template.inc
加入以下的几个函数:
//将分析结果保存到文件中去
  function savetofile ($dir,$varname){
   $data=$this-finish($this-get_var($varname));
   $fp=fopen($dir,"w+");
   fwrite($fp,$data);
  }
  //清除已赋值数组
   function renew(){
    $this-varkeys=array();
    $this-varvals=array();
    $this-file=array();
    }

第一个函数是结果保存到静态文件中,第二个是把所有的模板分析变量都置为空,以免批量处理时相互影响。

二,实现静态网页生成。
<?php
$itpl-set_file(“main”,”mian.tpl”);
//分析模板变量
…..
//分析mainmains
$tpl-parse("mains","main");
//把分析结果mains存入main.html
$tpl-savetofile("main.html","mains");
//置空
$tpl-renew();//至关重要
?

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

呵呵,是不是很简单,main.html就是我们要的内容。下面是一个结合数据库的例子,并用函数封装了起来。
<?php
//$aid是数据库中的文章id,$table是表名称,$template是模板地址,$tpl是template.inc的一个实例
//每一个aid对应一个静态网页地址,都存在一个数据表中
//表的结构类似于 aid     target       title
//                1     a1.html     ….
//                2     a2.html     ….
//                3     a3.html     ….
function staticInfo($aid){
   global $table,$template,$tpl;
   //查询数据库
   $res=mysql_query(“select * from $table where aid=’$aid’”);
   //取出数据
   $array=mysql_fetch_array($res);
   //读静态网页地址,标题。
   $target=$array[“target”];
$title=$array[“title”];
//分析模板
$tpl-set_file(“main”,$template);
//把模板中的{title}变量换成$title
$itpl-set_var(“title”,$title”);
//分析整个模板
$itpl-set_var(“mains”,”main”);
//把mains写入文件
$tpl-savetofi

来源:https://www.tulaoshi.com/n/20160129/1494030.html

延伸阅读
标签: ASP
  传统的网页BBS大多是采用CGI模式实现的,它的实现要求编程者既要掌握编程语言如Perl或C等,又要了解关于CGI模式的各项技术内容,因此要制作自己的网页BBS确实困难不小。ASP(Active Server Pages 动态服务器主页)的出现,使我们眼前一亮,能不能利用ASP实现网页BBS呢?回答当然是肯定的。ASP的诱人之处就在于它提供了一种简单...
标签: Web开发
用js生成任意圆角,下一步就是加入直角导角,圆角导外,外圆角导个,还有边框处理,阴影生成,还有柔化处理都是以后的重点和难点. 中工工基 人遥仍失遥士大夫工士大夫花样百出地苛夺花样百出地人测试有的我不想信工大师傅苛夺工士大夫花样百出地模压 械夺棋栽夺苛夺棋地花样百出地模压械夺棋栽夺中工工基 人遥仍失遥士大夫工士大夫花样百出地苛夺花...
标签: Web开发
代码如下: % if SaveFile("/htm/list.htm","http://www.xxx.com/asp/list.asp") then Response.write "已生成" else Response.write "没有生成" end if function SaveFile(LocalFileName,RemoteFileUrl) Dim Ads, Retrieval, GetRemoteData On Error Resume Next Set&...
标签: Web开发
代码如下: ?php  class html  {      var $dir;        //dir for the htmls(without/)      var $rootdir;    //root of html files(without/):html  &n...
标签: Web开发
6.FF1.5测试通过,绝对定位,直接定位上下左右,强制边局实现容器相对大小(标准): 代码:略 7.ff1.5 IE5 IE6通过测试 HTML代码 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" html xmlns="//www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" content="text/htm...

经验教程

178

收藏

32
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部