最近使用thinkcmf 静态缓存的时候,前台评论的模板地方会报错,仔细查找了下原因,

这里定位的路径出错了,定位到了Application下的view文件查找评论模板了,我们的实际comment模版文件应该在themes/simplebootx/comment下。
解决方法:
注释掉自动定位模板文件代码(文件位置Application/Comment/Controller/WidgetController.class.php)。改成这样的
/**
* 自动定位模板文件
* @access protected
* @param string $template 模板文件规则
* @return string
*/
public function parseTemplate($template='') {
$tmpl_path=C("SP_TMPL_PATH");
define("SP_TMPL_PATH", $tmpl_path);
// 获取当前主题名称
$theme = C('SP_DEFAULT_THEME');
if(C('TMPL_DETECT_THEME')) {// 自动侦测模板主题
$t = C('VAR_TEMPLATE');
if (isset($_GET[$t])){
$theme = $_GET[$t];
}elseif(cookie('think_template')){
$theme = cookie('think_template');
}
if(!file_exists($tmpl_path."/".$theme)){
$theme = C('SP_DEFAULT_THEME');
}
cookie('think_template',$theme,864000);
}
$theme_suffix="";
if(C('MOBILE_TPL_ENABLED') && sp_is_mobile()){//开启手机模板支持
if (C('LANG_SWITCH_ON',null,false)){
if(file_exists($tmpl_path."/".$theme."_mobile_".LANG_SET)){//优先级最高
$theme_suffix = "_mobile_".LANG_SET;
}elseif (file_exists($tmpl_path."/".$theme."_mobile")){
$theme_suffix = "_mobile";
}elseif (file_exists($tmpl_path."/".$theme."_".LANG_SET)){
$theme_suffix = "_".LANG_SET;
}
}else{
if(file_exists($tmpl_path."/".$theme."_mobile")){
$theme_suffix = "_mobile";
}
}
}else{
$lang_suffix="_".LANG_SET;
if (C('LANG_SWITCH_ON',null,false) && file_exists($tmpl_path."/".$theme.$lang_suffix)){
$theme_suffix = $lang_suffix;
}
}
$theme=$theme.$theme_suffix;
C('SP_DEFAULT_THEME',$theme);
$current_tmpl_path=$tmpl_path.$theme."/";
// 获取当前主题的模版路径
define('THEME_PATH', $current_tmpl_path);
C("TMPL_PARSE_STRING.__TMPL__",__ROOT__."/".$current_tmpl_path);
C('SP_VIEW_PATH',$tmpl_path);
C('DEFAULT_THEME',$theme);
define("SP_CURRENT_THEME", $theme);
if(is_file($template)) {
return $template;
}
$depr = C('TMPL_FILE_DEPR');
$template = str_replace(':', $depr, $template);
// 获取当前模块
$module = 'Comment';
if(strpos($template,'@')){ // 跨模块调用模版文件
list($module,$template) = explode('@',$template);
}
// 分析模板文件规则
if('' == $template) {
// 如果模板文件名为空 按照默认规则定位
$template = "/".CONTROLLER_NAME . $depr . ACTION_NAME;
}elseif(false === strpos($template, '/')){
$template = "/".CONTROLLER_NAME . $depr . $template;
}
$file = sp_add_template_file_suffix($current_tmpl_path.$module.$template);
$file= str_replace("//",'/',$file);
if(!file_exists_case($file)) E(L('_TEMPLATE_NOT_EXIST_').':'.$file);
return $file;
}
// /**
// * 自动定位模板文件
// * @access protected
// * @param string $template 模板文件规则
// * @return string
// */
// public function parseTemplate($template='') {
// // 获取当前主题名称
// $theme = C('SP_DEFAULT_THEME');
// if(C('TMPL_DETECT_THEME')) {// 自动侦测模板主题
// $t = C('VAR_TEMPLATE');
// if (isset($_GET[$t])){
// $theme = $_GET[$t];
// }elseif(cookie('think_template')){
// $theme = cookie('think_template');
// }
// if(!file_exists($tmpl_path."/".$theme)){
// $theme = C('SP_DEFAULT_THEME');
// }
// cookie('think_template',$theme,864000);
// }
// $depr = C('TMPL_FILE_DEPR');
// $template = str_replace(':', $depr, $template);
// // 获取当前模版分组
// $group = "Comment";
// // 获取当前主题的模版路径
// if(1==C('APP_GROUP_MODE')){ // 独立分组模式
// define('THEME_PATH', $tmpl_path.$theme."/");
// define('APP_TMPL_PATH',__ROOT__.'/'.basename($tmpl_path).'/'.$theme."/");
// }
// // 分析模板文件规则
// if('' == $template) {
// // 如果模板文件名为空 按照默认规则定位
// $template = MODULE_NAME . $depr . ACTION_NAME;
// }elseif(false === strpos($template, '/')){
// $template = MODULE_NAME . $depr . $template;
// }
// $templateFile = sp_add_template_file_suffix(THEME_PATH.$group.$template);
// if(!file_exists_case($templateFile))
// throw_exception(L('_TEMPLATE_NOT_EXIST_').'['.$templateFile.']');
// return $templateFile;
// }
0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复
1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号