用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上传、管理照片示例
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
一篇不错的PHP基础学习笔记
Mar 18 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
php实现telnet功能示例
Apr 08 PHP
CI(CodeIgniter)框架介绍
Jun 09 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
php将日期格式转换成xx天前的格式
Apr 16 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
jquery中$each()方法的使用指南
2015/04/30 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
详解vue 组件注册
2020/11/20 Vue.js
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python判断字符串是否是json格式方法分享
2017/11/07 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
最新pycharm安装教程
2020/11/18 Python
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
社区优秀志愿者材料
2014/02/02 职场文书
高三政治教学反思
2014/02/06 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
洗手间标语
2014/06/23 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
个人作风建设总结
2014/10/23 职场文书
2014年化验室工作总结
2014/11/21 职场文书
2015年复活节活动总结
2015/02/27 职场文书
质量保证书怎么写
2015/02/27 职场文书
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫
SQL Server删除表中的重复数据
2022/05/25 SQL Server