【phpcms-v9】phpcms-v9中模板载入函数template详解
2012-11-28 12:18
405 查看
/**
* 模板调用
*
* @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;
}
* 模板调用
*
* @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;
}
相关文章推荐
- C++ - 成员函数(member function)模板(template) 详解 及 代码
- v9 phpcms 模板自定义分页函数
- C++ - 成员函数(member function)模板(template) 详解 及 代码
- C++ - 函数模板定制(function template specialization) 详解 及 代码
- C++ - 函数模板定制(function template specialization) 详解 及 代码
- C++ - 函数模板(function template) 的 重载(overload) 详解 及 代码
- C++ - 函数模板(function template) 的 重载(overload) 详解 及 代码
- C++ - 函数模板(function template) 详解
- C++ - 函数模板(function template) 详解
- PHPCMS 2008 V9的 发邮件函数
- 【模板】qsort和sort的详解和比较函数的区别
- Python 中开发pattern的string模板(template) 实例详解
- C++ - 函数模板(function template) 的 推进(forward) 问题 及 解决
- PHPCMS_v9 wap不同列表采用不同模板的方法
- 【phpcms-v9】怎样给网站前台的个别页面更换新的模板?
- C++模板的特化详解(函数模版特殊,类模版特化)
- 读书笔记--C++ Template(The complete guide)--Chapter2--函数模板
- C++ - 函数模板(function template)返回值
- C++ Template学习笔记之函数模板(1)——函数模板定义
- 【Web】artTemplate模板引擎:编译(生成渲染函数)+渲染(生成HTML串) 模板:基于JS的语法(JS+自定义)+HTML