用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 的对象模型
Nov 16 PHP
使用php重新实现PHP脚本引擎内置函数
Mar 06 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
PHP实现通用alert函数的方法
Mar 11 PHP
php实现的农历算法实例
Aug 11 PHP
Symfony2联合查询实现方法
Mar 18 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
关于python多重赋值的小问题
2019/04/17 Python
python导入pandas具体步骤方法
2019/06/23 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
高考励志标语
2014/06/05 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
教师节座谈会主持词
2015/07/03 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python