织梦的 php代码没有被解析,警惕dede模版文件导致无法正常解析标签的问题

作者分享了一次遇到的问题,误在dede模版文件中混入PHP代码,导致标签识别错误,进而影响静态页面生成。问题出在`channelunit.helper.php`的MakeOneTag方法中,修正后的关键在于移除对文章字段的非法引用。
摘要由CSDN通过智能技术生成

有时候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'];之后居然正常了。

这种问题真的不好排查,所以记录下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值