dedecms调用副栏目文章列表方法

1.sql调用
2.修改arclist标签

修改文件/include/taglib/arclist.lib.php
查找
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 FIND_IN_SET(‘.GetSonIds($typeid).’,arc.typeid2)’;
else $orwheres[] = ‘arc.typeid IN (‘.GetSonIds($typeid).’,’.$CrossID.’)or FIND_IN_SET(‘.GetSonIds($typeid).’,arc.typeid2)’;

或者有个兼容性更高的代码:
if($CrossID==”){
$orwheres[] = ‘ (arc.typeid IN (‘.GetSonIds($typeid).’) OR arc.typeid2 IN (‘.GetSonIds($typeid).’) or FIND_IN_SET(‘.$typeid .’, arc.typeid2)>0)’;
}else{
$orwheres[] = ‘ (arc.typeid IN (‘.GetSonIds($typeid).’,’.$CrossID.’) OR arc.typeid2 IN (‘.GetSonIds($typeid).’,’.$CrossID.’) or FIND_IN_SET(‘.$typeid .’,arc.typeid2)>0) ‘;
}

代码具体意思不多做解释。无非就是给sql语句增加了个判断typeid2的情况。
刚才我百度了一下,这方面的修改文章还真不少。
还有人提到了模糊查询。我把下面的代码黏贴进来:
模糊查询说明:
mysql中如果用like模糊查询的话,也是可以的。不过可能不是很准。
代码如下:
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.”,%’)”;
一般SQL是可以支持CHARINDEX函数的。不过可惜的是Mysql不支持这个函数所以只能用以上方法或者like模糊查询了。如果你有更好的方法的话

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注