首页 > 编程 > HTML > 正文

用Smarty模板引擎生成静态HTML文件

2020-03-22 19:14:16
字体:
来源:转载
供稿:网友
  • 用php生成静态文件的方式很简单,就是用fopen()方法,fwrite(),fclose(),就好了,下面是php文档中fopen中mode值的说明:

    然后我们有一个需求就是在smarty模版引擎中点击一个按钮生成一个html的文件,内容是从数据库读出来的一串循环的、有层级的数据,这时候我们应该怎么做了?

    用smarty生成静态html文件的关键就是用缓存技术,开启缓冲,用display或者fetch向前台传输数据的时候其实不会显示在view上,这时候打开文件,写入文件,就生成好了一个静态文件。

    我们看2个实例:

    1、
     

    public function index()      {           $this->cismarty->caching = true;           ob_start();           $title = "title";           $shopName = "穿越火线";           $model = '<li><h3>{#$shopName#}</h3></li>';           $outfilename = ".html";           $this->cismarty->assign("title", $title);          $this->cismarty->assign("model", $model);          $this->cismarty->assign("shopName", $shopName);          $this->cismarty->display("ppms/smarty.html");           $str = ob_get_contents();          $fp = @fopen($outfilename, 'w');          if (!$fp) {              Show_Error_Message( ERROR_WRITE_FILE );          }          fwrite($fp, $str);          fclose($fp);          ob_end_clean();                   }

    2、

    function makeHtml(){         ob_start();         $this->cismarty->assign("title","Hello World!");         $content = $this->cismarty->fetch("ppms/smarty.html");         //这里的 fetch() 就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了         $fp = fopen("0001.html", "w");         fwrite($fp, $content);                 fclose($fp);     }

    上面两种方式是常用的,第一种用display方法,用$str = ob_get_contents();得到向前台输出的内容,第二种用fetch直接获取向前台输出的内容(两种都不会真正地展示出来中)。然后写入到文件中,因为用“w”的方式,没有这个文件就会新建一个。成功~~~

    PHP编程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表