原来ThinkPHP自带了生成静态页的函数buildHtml,使用起来很方便!最新的手册里没写这个方法,向大家介绍一下。

    protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') {
$content = $this->fetch($templateFile);
$htmlpath = !empty($htmlpath)?$htmlpath:HTML_PATH;
$htmlfile = $htmlpath.$htmlfile.C('HTML_FILE_SUFFIX');
if(!is_dir(dirname($htmlfile)))
// 如果静态目录不存在 则创建
mk_dir(dirname($htmlfile));
if(false === file_put_contents($htmlfile,$content))
throw_exception(L('_CACHE_WRITE_ERROR_').':'.$htmlfile);
return $content;
}



使用方法:

$this->buildHtml('静态文件', '静态路径','模板文件');




参数一:静态文件,是指生成后的静态文件名,文件保存路径完整的就是:静态路径/静态文件。例如静态文件设置a/index.那么保存的路径就是项
目路径/Html/a/index.html(默认的静态路径在项目路径的Html文件夹下,没有可以自己创建)

参数二:静态路径,上面已经说明了默认的路径,3.0中可以在入口文件里加入参数来更改静态路径。
define(‘HTML_PATH’, ‘./’);(将静态路径义为网站根目录)

参数三:模板文件,我感觉官方这个描述是不正确的,准确的来说应该是目标模块,就是需要生成静态文件的模块。格式:模块名:操作。比如要生成Index下的a方法为静态文件,那就是Index:a。如果为空则默认生成当前操作的静态文件。

生成静态页,我们要选择一个静态模板页,静态化网页的原理也就是替换模板中的变量,所以我们要把需要替换的变量的值获取出来,比如

$this->assign ( 'webname', $websites ['name'] );
$this->assign ( 'siteid', $siteid );
$this->assign ( 'type', $type );
$this->assign ( 'header', $websites ['templatedirectory'] . '@Public_header' );
$this->assign ( 'footer', $websites ['templatedirectory'] . '@Public_footer' );


静态模板页有相应的{$header},{$footer}等,使用buildHtml方法后,就把这些变量给替换掉了。是不是很简单。

本文链接:http://www.tantengvip.com/2012/12/thinkphp-buildhtml/

更多相关文章

  1. 问一个高深的问题,静态html页面如何接收来自服务器的参数?
  2. Canvas绘制心电图(静态)
  3. 纯HTML+CSS静态百度登录界面制作
  4. JSP页面图片路径为中文时乱码解决办法
  5. html页面中给img标签的src属性赋值为一张图片的存储路径,图片不显
  6. 帮助相对路径链接到本地​​文件
  7. c#生成html静态文件时出现空白行,怎么去掉utf-8中的bom
  8. PHP的目录路径问题
  9. php 获取当前页面url路径

随机推荐

  1. 简单数据的最佳服务器端数据存储方法
  2. 如何在jquery galleria中滑动包含内部元
  3. 密码强度正则表达式与数字[重复]
  4. eventListener将添加到父级,但子元素干扰
  5. AngularJS:如何从外部评估指令?
  6. 如何获取knockoutjs可观察数组的下一个元
  7. ABP(现代ASP.NET样板开发框架)系列之21、
  8. Javascript正则表达式对象和美元符号
  9. javascript-cropper插件翻译笔记
  10. javascript 构造函数中的属性与原型上属