Think/Template.php
public function loadTemplate($templateFile, $prefix = '')
    {
        if (is_file($templateFile)) {
            $this->templateFile = $templateFile;
            // 读取模板文件内容
            $tmplContent = file_get_contents($templateFile);
        } else {
            $tmplContent = $templateFile;
        }
        // 根据模版文件名定位缓存文件
        $tmplCacheFile = $this->config['cache_path'].$prefix.md5($templateFile).$this->config['cache_suffix'];

        // 判断是否启用布局
        if (C('LAYOUT_ON')) {
            // 可以单独定义不使用布局
            if (false !== strpos($tmplContent, '{__NOLAYOUT__}')) {
                $tmplContent = str_replace('{__NOLAYOUT__}', '', $tmplContent);
            } else {
                // 替换布局的主体内容
                $layoutFile = THEME_PATH.C('LAYOUT_NAME').$this->config['template_suffix'];
                // 检查布局文件
                if (!is_file($layoutFile)) {
                    throw new BaseException(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));

        return $tmplCacheFile;
    }
public function loadTemplate($templateFile, $prefix = '')
    {
        if (is_file($templateFile)) {
            $this->templateFile = $templateFile;
            // 读取模板文件内容
            $tmplContent = file_get_contents($templateFile);
        } else {
            $tmplContent = $templateFile;
        }
        // 根据模版文件名定位缓存文件
        $tmplCacheFile = $this->config['cache_path'].$prefix.md5($templateFile).$this->config['cache_suffix'];

        // 判断是否启用布局
        if (C('LAYOUT_ON')) {
            // 可以单独定义不使用布局
            if (false !== strpos($tmplContent, '{__NOLAYOUT__}')) {
                $tmplContent = str_replace('{__NOLAYOUT__}', '', $tmplContent);
            } else {
                // 替换布局的主体内容
                $layoutFile = THEME_PATH.C('LAYOUT_NAME').$this->config['template_suffix'];
                // 检查布局文件
                if (!is_file($layoutFile)) {
                    throw new BaseException(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));

        return $tmplCacheFile;
    }
加载主模板并缓存


@param string $templateFile 模板文件
@param string $prefix 模板标识前缀
@return string
@throws BaseException