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

来源:互联网 发布:直播刷人气软件 编辑:程序博客网 时间:2024/04/28 21:20
写这篇博文的原因是因为伊暖童鞋遇到了一个问题,
交流了好半天才晓得到底指的是什么。我发现,搞计算机久了,连和别人交流都成问题了。
伊暖童鞋想解决的问题,可以使用调用副栏目的方法来解决。我去看了下arclist标签。
发现此标签默认变量中没有typeid2的变量。
目前面临两个解决途径。
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)';
代码具体意思不多做解释。无非就是给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模糊查询了。如果你有更好的方法的话。
原创粉丝点击