警惕dede模版文件导致无法正常解析标签的问题
有时候dede的模版文件可能导致模版标签被错误的认识,下面是我在文章模版中添加的php代码:
{dede:php}
global $dsql;
$categoryname = $this->Fields\['codecategory'\];
echo "$categoryname";
......
我的目的是想在php代码中使用文章的某个字段的值,这种用法显然是错误的,但是我并没在意,最多得不到这个值嘛.
但是事情没这么简单,我发现发表文章的时候,无法生成静态页面了。经过跟踪代码发现问题出在\include\helpers\channelunit.helper.php的MakeOneTag方法中。
在MakeOneTag中,末尾的这几行代码出了问题:
if(in_array($tagname,$alltags))
{
$filename = DEDEINC.'/taglib/'.$tagname.'.lib.php';
include_once($filename);
$funcname = 'lib_'.$tagname;
$dtp->Assign($tagid,$funcname($ctag,$refObj));
}
其中$tagname
打印出来的值是php,于是因为include_once
找不到相应的文件而出现不能继续执行的情况。
一开始根本不知道是由于模版文件造成的。后来实在找不出原因,才尝试着将模版文件中的一些可疑用法去掉,结果在删掉$categoryname = $``this``->Fields[``'codecategory'``];
之后居然正常了。
这种问题真的不好排查,所以记录下来。