这个方法是根据DEDE5.3版改成的,具体如下:
打开文件/include/taglib/arclist.lib.php,找到第211行左右
或者直接搜索,将代码:
if($CrossID=='') $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).')';
else $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).','.$CrossID.')';
改成
if($CrossID=='') $orwheres[] = ' typeid in ('.GetSonIds($typeid).') or typeid2 in ('.GetSonIds($typeid).')';
else $orwheres[] = ' typeid in ('.GetSonIds($typeid).','.$CrossID.') or typeid2 in ('.GetSonIds($typeid).','.$CrossID.')';
但是在实际应用后,发现调用flag标志为其它,如“图片、推荐”时被调用出来,原因就是查询语句的where 判断句子没有把 typeid in ($typeid) or typeid2 in ($typeid) 用括弧给括起来。 在后来的使用中还发现上述修改不能实现选择多个副栏目的显示,因此进一步修改为
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.",%')";
