用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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
PHP提取中文首字母
Apr 09 PHP
让PHP支持断点续传的源码
May 16 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
php实现求相对时间函数
Jun 15 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
PHP中number_format()函数的用法讲解
Apr 08 PHP
Laravel 创建指定表 migrate的例子
Oct 09 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代码优化及php相关问题总结
2006/10/09 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php中__toString()方法用法示例
2016/12/07 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
javascript工具库代码
2012/03/29 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
Promise扫盲贴
2019/06/24 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
python返回昨天日期的方法
2015/05/13 Python
python读取excel表格生成erlang数据
2017/08/26 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
python多线程下信号处理程序示例
2019/05/31 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
怎样声明子类
2013/07/02 面试题
超市业务员岗位职责
2013/12/05 职场文书
我未来的职业规划范文
2014/01/11 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
护士医德考评自我评价
2015/03/03 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
交通安全教育心得体会
2016/01/15 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
MySQL基于索引的压力测试的实现
2021/11/07 MySQL
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python