原来在dev-club发表的一篇文章,将怎么用模板处理程序PHPlib 中的template.inc实现静态网页的生成,呵呵,居然被列入精华,并被多个网站转载,想来这是荣幸。其实网上这方面的东西很多了,我上此发布的所谓IAMS( iwind 文章管理系统),里面也有,有心人可以看一下。下面我只是简要在总结一次。
现在一般说生成静态网页的方法有三种,一个是配置服务器,大家可以到https://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多个查询语句时,不妨定时生成静态网页,既大幅提高了访问速度,也减轻了服务器负担。
你可以看出来,我用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();//至关重要 ?> |
(举报)