'LAYOUT_ON'=>true, //开启布局模板
'LAYOUT_NAME'=>'Common@Default:layout', //设置布局模版
看了下ThinkPHP内置模板引擎类的代码
/**
* 加载主模板并缓存
* @access public
* @param string $tmplTemplateFile 模板文件
* @param string $prefix 模板标识前缀
* @return string
* @throws ThinkExecption
*/
public function loadTemplate ($tmplTemplateFile,$prefix='') {
if(is_file($tmplTemplateFile)) {
$this->templateFile = $tmplTemplateFile;
// 读取模板文件内容
$tmplContent = file_get_contents($tmplTemplateFile);
}else{
$tmplContent = $tmplTemplateFile;
}
// 根据模版文件名定位缓存文件
$tmplCacheFile = $this->config['cache_path'].$prefix.md5($tmplTemplateFile).$this->config['cache_suffix'];
// 判断是否启用布局
if(C('LAYOUT_ON')) {
if(false !== strpos($tmplContent,'{__NOLAYOUT__}')) { // 可以单独定义不使用布局
$tmplContent = str_replace('{__NOLAYOUT__}','',$tmplContent);
}else{ // 替换布局的主体内容
$layoutFile = T(C('LAYOUT_NAME')); //替换成T()函数?
// $layoutFile = THEME_PATH.C('LAYOUT_NAME').$this->config['template_suffix']; //原代码
// 检查布局文件
if(!is_file($layoutFile)) {
E(L('_TEMPLATE_NOT_EXIST_').':'.$layoutFile);
}
$tmplContent = str_replace($this->config['layout_item'],$tmplContent,file_get_contents($layoutFile));
}
}
// 编译模板内容
$tmplContent = $this->compiler($tmplContent);
Storage::put($tmplCacheFile,trim($tmplContent),'tpl');
return $tmplCacheFile;
}