原來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方法后,就把這些變量給替換掉了。是不是很簡單。