dedecms多个栏目arclist使用副栏目不显示
发布时间:2021-12-16 11:10 所属栏目:19 来源:互联网
导读:使用dedecms多个栏目arclist调用副栏目不显示问题我相信几乎没几个朋友可以解决了,这里看到一站长原创了一篇解决方法非常的不错. 织梦arclist调用副栏目不显示,网上关于这个问题的解决办法有很多,其中一种是. 打开/include/taglib/arclist.lib.php,代码约位
使用dedecms多个栏目arclist调用副栏目不显示问题我相信几乎没几个朋友可以解决了,这里看到一站长原创了一篇解决方法非常的不错. 织梦arclist调用副栏目不显示,网上关于这个问题的解决办法有很多,其中一种是. 打开/include/taglib/arclist.lib.php,代码约位于295-296行,查找以下两行代码: if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')'; else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')'; 将其替换成以下代码: //指定了多个栏目时,不再获取子类的id if( preg_match('#,#', $typeid) ) //如果typeid字段匹配逗号, 就是说typeid调用多个栏目,例如:typeid=“2,3,8” { //指定了getall属性或主页模板例外 if($getall==1 || emptyempty($refObj->Fields['typeid'])) { $typeids = explode(',', $typeid); foreach($typeids as $ttid) { $typeidss[] = GetSonIds($ttid); } $typeidStr = join(',', $typeidss); $typeidss = explode(',', $typeidStr); $typeidssok = array_unique($typeidss); $typeid = join(',', $typeidssok); } $orwheres[] = " arc.typeid IN ($typeid)"; //导致typeid='2,3,8'情况下不能调用副栏目问题产生的地方 } else //如果typeid不匹配逗号,就是调用一个栏目 例如 typeid="2" { //处理交叉栏目 $CrossID = ''; if($ctag->GetAtt('cross')=='1') { $arr = $dsql->GetOne("SELECT `id`,`topid`,`cross`,`crossid`,`ispart`,`typename` FROM `dede_arctype` WHERE id='$typeid' "); if( $arr['cross']==0 || ( $arr['cross']==2 && trim($arr['crossid']=='') ) ) { $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')'; } else { $selquery = ''; if($arr['cross']==1) { $selquery = "SELECT id,topid FROM `dede_arctype` WHERE typename LIKE '{$arr['typename']}' AND id<>'{$typeid}' AND topid<>'{$typeid}' "; } else { $arr['crossid'] = preg_replace('#[^0-9,]#', '', trim($arr['crossid'])); if($arr['crossid']!='') $selquery = "SELECT id,topid FROM `dede_arctype` WHERE id IN('{$arr['crossid']}') AND id<>'{$typeid}' AND topid<>'{$typeid}' "; } if($selquery!='') { $dsql->SetQuery($selquery); $dsql->Execute(); while($arr = $dsql->GetArray()) { $CrossID .= ($CrossID=='' ? $arr['id'] : ','.$arr['id']); } } } } if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')'; else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')'; //导致typeid='2'情况下不能调用副栏目问题产生的地方 } (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读