ThinkPHP生成靜態頁buildHtml方法


原來ThinkPHP自帶了生成靜態頁的函數buildHtml,使用起來很方便!最新的手冊里沒寫這個方法,向大家介紹一下。

PHP
1
2
3
4
5
6
7
8
9
10
11
    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;
    }


使用方法:

PHP
1
$this->buildHtml('靜態文件', '靜態路徑','模板文件');


參數一:靜態文件,是指生成后的靜態文件名,文件保存路徑完整的就是:靜態路徑/靜態文件。例如靜態文件設置a/index.那么保存的路徑就是項
目路徑/Html/a/index.html(默認的靜態路徑在項目路徑的Html文件夾下,沒有可以自己創建)

參數二:靜態路徑,上面已經說明了默認的路徑,3.0中可以在入口文件里加入參數來更改靜態路徑。
define(‘HTML_PATH’, ‘./’);(將靜態路徑義為網站根目錄)

參數三:模板文件,我感覺官方這個描述是不正確的,准確的來說應該是目標模塊,就是需要生成靜態文件的模塊。格式:模塊名:操作。比如要生成Index下的a方法為靜態文件,那就是Index:a。如果為空則默認生成當前操作的靜態文件。

生成靜態頁,我們要選擇一個靜態模板頁,靜態化網頁的原理也就是替換模板中的變量,所以我們要把需要替換的變量的值獲取出來,比如

PHP
1
2
3
4
5
$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方法后,就把這些變量給替換掉了。是不是很簡單。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM