用libTemplate实现静态网页的生成

行者乐途cl

行者乐途cl

2016-01-29 14:43

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

作者:iwind

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

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

现在一般说生成静态网页的方法有三种,一个是配置服务器,大家可以到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多个查询语句时,不妨定时生成静态网页,既大幅提高了访问速度,也减轻了服务器负担。

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

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

一, 修改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();//至关重要
?

呵呵,是不是很简单,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

展开更多 50%)
分享

猜你喜欢

用libtemplate实现静态网页生成

PHP
用libtemplate实现静态网页生成

用libTemplate实现静态网页的生成

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

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用PHP实现WEB动态网页静态

PHP
用PHP实现WEB动态网页静态

用JSP生成静态页面

Web开发
用JSP生成静态页面

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用XML组件生成静态首页

Web开发
用XML组件生成静态首页

如何生成静态html

PHP
如何生成静态html

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

DBA应遵循的Oracle调优原则

DBA应遵循的Oracle调优原则

一个简单的php在线端口扫描器

一个简单的php在线端口扫描器
下拉加载更多内容 ↓