DEDE arclist标签没法调用副栏目文章的解决办法arclist标签调用

arclist标签没法调用副栏目文章的解决办法php

 

最近发现DEDECMS中的文章在选择幅栏目后,缓存

在其对应的幅栏目列表中能够显示该文章,但在arclist 标签中却没法显示该文章,测试

网上找了不少,解决办法都同样,但写法却写错了,致使arclist标签在使用了flag属性时会失效的问题。spa

修正后的写法以下。cli


打开/include/taglib/arclist.lib.php,我目前用的最新版 5.7 SP1,方法

代码约位于295-296行。查找如下两行代码。文件

if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')';
else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')';标签

 

将其替换成如下代码。co

if($CrossID=='') $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).') OR arc.typeid2 IN ('.GetSonIds($typeid).')) ';
else $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.') OR arc.typeid2 IN ('.GetSonIds($typeid).','.$CrossID.')) ';oss

 

OK,这样就改完了,保存后若是你是生成静态的,请生成相关的。若是是动态的,请更新系统缓存。而后就能够看到效果了。

===============================================================================

以上方法有个缺点arclist 标签 就是只能有在显示两处位置 

下面方法经测试能够个 不知道三个以上能够不能够

用arclist标签调用文章的时候才发现,根本没法调用相关文章。

下面给出解决办法,但愿帮到须要的人。

找到/include/taglib/arclist.lib.php文件而后打开。而后在大约300行代码的位置。将下面的代码

 

if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')';

else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')';

替换成

 

 

if($CrossID=='')

$orwheres[] = " (arc.typeid in (".GetSonIds($typeid).") or

arc.typeid2 in(".GetSonIds($typeid).") or CONCAT( ',',

arc.typeid2, ',' ) LIKE '%,".$typeid.",%' )";

else $orwheres[] = " (arc.typeid in (".GetSonIds($typeid)

.",".$CrossID.") or arc.typeid2

in (".GetSonIds($typeid).",".$CrossID.")

or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,".$typeid.",%')";

相关文章
相关标签/搜索