让织梦主页可以调用副栏目(副标题为9个之内)

网站找了很久 关于织梦调用副栏目的例子 代码为

 打开/include/taglib/arclist.lib.php,代码约位于295-296行(我目前用的DedeCMS最新版 5.7 SP1),查找以下两行代码:

 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).')) ';

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

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

以上代码有一个问题 大家想下

typeid2

字段中为以“,”分割的字符串 和后面的 in集合比较会出现未知结果。 因此解决它可以写一个 类似 split的函数来解决它 但是 该死的mysql还不支持 返回表结构的函数(别喷我 我的mysql是 门外汉的水平)  没办法 咱笨 啊 用死办法 写 一个 死栏目的比较  反正生成静态页面只 调用一次慢就慢吧 。

代码如下

                if($CrossID=='') $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).') OR ( SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',1),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',2),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',3),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',4),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',5),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',6),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',7),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',8),\',\',-1) IN ('.GetSonIds($typeid).') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',9),\',\',-1) IN ('.GetSonIds($typeid).')))';
                else $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.') OR ( SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',1),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',2),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',3),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',4),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',5),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',6),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',7),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',8),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR  SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',9),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.'))) ';


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值