【phpcms-v9】phpcms-v9中模板载入函数template详解

/**
 * 模板调用
 *
 * @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(!empty($style) && preg_match('/([a-z0-9\-_]+)/is',$style)) {//如果模板风格不为空,即:参数3不为空的情况


//第二种情况:模板风格参数3为空,并且在添加栏目时未指定模板风格的情况,将获取站点中设置的模板风格
} elseif (empty($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(!empty($siteid)) { //如果站点id不为空
$style = $sitelist[$siteid]['default_style']; //获取当前站点下的默认模板风格,即:在设置站点信息时选择的模板风格
}
//第三种情况:模板风格参数3为空,并且在添加栏目时指定了模板风格的情况,将获取添加栏目时指定的模板风格
} elseif (empty($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');
}
}
//返回编译文件
return $compiledtplfile;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值