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

本文介绍了一种通过修改arclist.lib.php文件中的arclist标签来解决typeid2变量缺失的方法,使得能够正确地调用副栏目。同时提供了一种模糊查询的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这篇博文的原因是因为伊暖童鞋遇到了一个问题,
交流了好半天才晓得到底指的是什么。我发现,搞计算机久了,连和别人交流都成问题了。
伊暖童鞋想解决的问题,可以使用调用副栏目的方法来解决。我去看了下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模糊查询了。如果你有更好的方法的话。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值