用libtemplate实现静态网页生成


Posted in PHP onOctober 09, 2006

  by coldwind/iwind/month/ccterran http://iwind.org
   有很长一段时间我到处问别人怎么实现静态网页,还向唠叨提过问题,而如今,我终于想出了一个很简单的办法,那就是用libtemplate来实现它。
  大家看:http://doc.iwind.org
  下面我就如何实现静态网页输出谈一谈。
  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;
      }
   所以说实现生成静态页面是很简单的.更新也非想象中那么复杂.
  (完)

PHP 相关文章推荐
PHP+DBM的同学录程序(3)
Oct 09 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
PHP6新特性分析
Mar 03 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
php生成word并下载代码实例
Mar 15 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 PHP
初探PHP5
Oct 09 #PHP
用PHP连mysql和oracle数据库性能比较
Oct 09 #PHP
利用文件属性结合Session实现在线人数统计
Oct 09 #PHP
PHP中上传大体积文件时需要的设置
Oct 09 #PHP
新版PHP极大的增强功能和性能
Oct 09 #PHP
用PHP开发GUI
Oct 09 #PHP
PHP中实现进程间通讯
Oct 09 #PHP
You might like
PHP入门学习笔记之一
2010/10/12 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
JS实现简易日历效果
2021/01/25 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
Python中int()函数的用法浅析
2017/10/17 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
Python常用特殊方法实例总结
2019/03/22 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
小区停车场管理制度
2014/01/27 职场文书
啤酒节策划方案
2014/05/28 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
生物工程专业求职信
2014/09/03 职场文书
辩护词格式
2015/05/22 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang