用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+MySQL 制作简单的留言本
Nov 02 PHP
关于php fread()使用技巧
Jan 22 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
php动态变量定义及使用
Jun 10 PHP
php实现word转html的方法
Jan 22 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
Yii框架应用组件用法实例分析
May 15 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 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中通过curl检测页面是否被百度收录
2013/09/27 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
javascript 写类方式之十
2009/07/05 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
Python的print用法示例
2014/02/11 Python
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
Python编写登陆接口的方法
2017/07/10 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
python正则表达式面试题解答
2020/04/28 Python
python 实现多线程下载视频的代码
2019/11/15 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
区域销售经理岗位职责
2013/12/10 职场文书
自我鉴定注意事项
2014/01/19 职场文书
园艺师求职信
2014/04/27 职场文书
销售求职信范文
2014/05/26 职场文书
干部作风建设工作总结
2014/10/29 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书