用libtemplate实现静态网页生成

by coldwind/iwind/month/ccterran
有很长一段时间我到处问别人怎么实现静态网页,还向唠叨提过问题,而如今,我终于想出了一个很简单的办法,那就是用libtemplate来实现它。
大家看: 下面我就如何实现静态网页输出谈一谈。 1,修改libtemplate.
加入两个函数 //将分析结果保存到文件中去 function savetofile
($dir,$varname){ $data=$this-finish($this-get_var($varname));
$fp=fopen($dir,”w+”); fwrite($fp,$data); }
函数中的dir是我们要保存在文件的地方。varname则是libtemplate中$target,使用如下:
$tpl-set_file(“main”,”main.tpl”); … $tpl-parse(“mains”,”main”);
$tpl-savetofile(“html/main.html”,”mains”);
相信懂libtemplate的读者很容易理解这些. //清除已赋值数组 function
renew(){ $this-varkeys=array(); $this-varvals=array();
$this-file=array(); } 这样就可以清除前面模板分析的影响. 2,实现静态输出.
如果输出的是单文件正如上面的一个例子. $tpl-set_file(“main”,”main.tpl”);
… $tpl-parse(“mains”,”main”);
$tpl-savetofile(“html/main.html”,”mains”);
但一旦我们更改了文章显示的模板,如何使以前生成的静态网页如何快速更新呢?显然要循环输出.例子如下:
html_info(){//单个文件,只是一个相似的例子 global $tpl;
$tpl-set_file(“main”,”main.tpl”); … $tpl-parse(“mains”,”main”);
$tpl-savetofile(“html/main.html”,”mains”); $tpl-renew();//至关重要 }
//循环输出 for($i=0;$i$total;$i++){ … html_info; }
所以说实现生成静态页面是很简单的.更新也非想象中那么复杂. (完)

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

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

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

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