- /**
- * 模板調用
- *
- * @param $module
- * @param $template
- * @param $istag
- * @return unknown_type
- */
- function template($module = 'content', $template = 'index', $style = '') {
- if(strpos($module, 'plugin/')!== false) { //一般情況下不會執行if里面的代碼
- $plugin = str_replace('plugin/', '', $module);
- return p_template($plugin, $template,$style);
- }
- $module = str_replace('/', DIRECTORY_SEPARATOR, $module);
- //將前者替換為后者,一般情況下$module中不會出現分隔符
- //第一種情況:模板風格參數3不為空的情況
- if(!emptyempty($style) && preg_match('/([a-z0-9/-_]+)/is',$style)) {//如果模板風格不為空,即:參數3不為空的情況
- //第二種情況:模板風格參數3為空,并且在添加欄目時未指定模板風格的情況,將獲取站點中設置的模板風格
- } elseif (emptyempty($style) && !defined('STYLE')) {
- //兩個條件:1.如果模板風格為空,即,參數3為空 2.如果模板風格常量也未定義
- if(defined('SITEID')) {
- //如果站點id常量SITEID被定義過,那么將常量中的站點id作為當前站點id
- $siteid = SITEID;
- //注意:SITEID與STYLE常量的定義最有可能的地方是在當前控制器文件中
- } else {
- $siteid = param::get_cookie('siteid');
- //從cookie中獲取站點id
- }
- if (!$siteid) $siteid = 1;
- //如果獲取不到站點id,則設置默認站點id值為1
- $sitelist = getcache('sitelist','commons');
- //站點緩存文件:獲取站點緩存文件中所有站點的詳細配置信息
- if(!emptyempty($siteid)) {
- //如果站點id不為空
- $style = $sitelist[$siteid]['default_style']; //獲取當前站點下的默認模板風格,即:在設置站點信息時選擇的模板風格
- }
- //第三種情況:模板風格參數3為空,并且在添加欄目時指定了模板風格的情況,將獲取添加欄目時指定的模板風格
- } elseif (emptyempty($style) && defined('STYLE')) {
- //兩個條件:1.參數3為空 2.模板風格常量在控制器中定義
- $style = STYLE;
- //第四種情況:默認模板風格
- //將控制器中定義的模板風格常量作為當前模板風格
- } else { //STYLE:添加欄目時選擇的模板風格
- $style = 'default';
- //默認模板風格
- }
- if(!$style) $style = 'default';
- $template_cache = pc_base::load_sys_class('template_cache');//模板解析類,路徑:phpcms/libs/classes/template_cache.class.php
- //編譯文件緩存路徑:根目錄/caches/caches_template/default/content/index.php
- $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';
- //路徑:phpcms/templates/dafault/content/index.html ,如:首頁模板文件
- if(file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
- //如果編譯文件不存在或者說模板文件的創建時間大于編譯文件的生成時間,則重新編譯
- if(!file_exists($compiledtplfile) || (@filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > @filemtime($compiledtplfile))) {
- $template_cache->template_compile($module, $template, $style);//適用模板風格不是default的情況
- }
- } else {
- //編譯文件緩存路徑:根目錄/caches/caches_template/default/content/index.php
- $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';
- //如果編譯文件不存在或者說前臺公共的模板文件存在,并且前臺公共模板文件的創建時間大于編譯文件的生成時間
- if(!file_exists($compiledtplfile) || (file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') && filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > filemtime($compiledtplfile))) {
- //重新編譯
- $template_cache->template_compile($module, $template, 'default');//適用于模板風格為default的情況
- } elseif (!file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
- //如果前臺公共的模板文件不存在的話,則提示模板不存在
- showmessage('Template does not exist.'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html');//開源代碼Vevb.com
- }
- }
- //返回編譯文件
- return $compiledtplfile;
- }
新聞熱點
疑難解答