威尼斯人81818官方网站(中国)有限公司

51威尼斯人81818官方网站-威尼斯人81818官方网站专业提供

威尼斯人81818官方网站

威尼斯人81818官方网站

PHP空间

威尼斯人81818官方网站空间

威尼斯人81818官方网站

威尼斯人81818官方网站

,支撑试用30天
售前客服
在线咨询
在线咨询
在线咨询
在线咨询
售后服务
在线咨询
在线咨询
财务问题
在线咨询
代理加盟
在线咨询
 
推荐产品
    300M威尼斯人81818官方网站空间
    300M网站空间,送60M数据库!
    现价只要:22元/月
    500M威尼斯人81818官方网站空间
    500M网站空间,送100M数据库!
    现价只要:29元/月
    1G威尼斯人81818官方网站空间
    1G网站空间,送300M数据库!
    现价只要:39元/月
    500M香港免备案空间
    500M网站空间,送160M数据库!
    现价只要:26元/月
    1G香港免备案空间
    1G网站空间,送300M数据库!
    现价只要:36元/月
    100M威尼斯人81818官方网站
    100M网站空间,送30M数据库!
    现价只要:12.8元/月
 
织梦多个栏目arclist调用副栏目不显示的解决办法
文章来源:51威尼斯人81818官方网站-威尼斯人81818官方网站  点击数:  更新时间:2017/9/4 17:02:40
购买威尼斯人81818官方网站空间购买威尼斯人81818官方网站【不限iis】宽屏网站制作【还送手机网站】
香港云主机/99元/月国内空间【免费备案】 特价网站空间
.Net专用空间网站快速排名 游戏空间【支撑月付】
织梦arclist调用副栏目不显示的解决办法:

打开/include/taglib/arclist.lib.php,代码约位于295-296行,查找以下两行代码:

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

  将其替换成以下代码:

  1.         $vicewheres = "";        
  2.                     $typeids = explode(",",GetSonIds($typeid));        
  3.                     $crossids = explode(",",$CrossID);        
  4.                     $typeidss = array_merge($typeids,$crossids);        
  5.                     $typeidss = array_unique($typeidss);        
  6.                     foreach($typeidss as $tid){        
  7.                         $liketypeid2 = ",".$tid.",";        
  8.                         $vicewheres.= " or CONCAT(,,arc.typeid2,,) like %$liketypeid2% ";        
  9.                     }        
  10.                     if($CrossID==){        
  11.                         if($vicewheres!="")        
  12.                             $orwheres[] = (arc.typeid in (.GetSonIds($typeid).) .$vicewheres.) ;        
  13.                         else        
  14.                             $orwheres[] = arc.typeid in (.GetSonIds($typeid).) ;        
  15.                     }else{        
  16.                         if($vicewheres!="")        
  17.                             $orwheres[] = (arc.typeid in (.GetSonIds($typeid).,.$CrossID.) .$vicewheres.) ;        
  18.                         else        
  19.                             $orwheres[] = arc.typeid in (.GetSonIds($typeid).,.$CrossID.) ;        
  20.                     }    

这种办法可以解决typeid="2"的情况下不显示副栏目的问题, 如果typeid=“2,3,8”,有多个栏目需要调用副栏目就不行了  怎么解决这个问题,找到262行, $orwheres[] = " arc.typeid IN ($typeid) "; 直接替换为: 

  1. $vicewheres = "";        
  2.                foreach($typeid as $tid){        
  3.                 $liketypeid2 = ",".$tid.",";        
  4.                    $vicewheres.= " or CONCAT(,,arc.typeid2,,) like %$liketypeid2% ";        
  5.                }        
  6.             if($vicewheres!="")        
  7.                 $orwheres[] = " (arc.typeid in ($typeid) $vicewheres) ";        
  8.             else        
  9.                 $orwheres[] = " arc.typeid in ($typeid) ";   

问题产生的原因,看下arclist.lib.php原始代码:( typeid为主栏目id, typeid2为副栏目id

    找到246行:
      //指定了多个栏目时,不再获取子类的id       if( preg_match(#,#, $typeid) )    //如果typeid字段匹配逗威尼斯人81818官方网站(中国)有限公司, 就是说typeid调用多个栏目,例如:typeid=“2,3,8”
             {
                //指定了getall属性或主页模板例外
                if($getall==1 || empty($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不匹配逗威尼斯人81818官方网站(中国)有限公司,就是调用一个栏目 例如 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情况下不能调用副栏目问题产生的地方
            }

国内、香港、美国、全免备案www.51mianbeian.com--51威尼斯人81818官方网站-威尼斯人81818官方网站,专业免备案空间提供商!
本文网址:/question_4/431.html
相关文章

上班时间:周一至周六 (9:00-12:00 13:30:00-17:30 19:00-23:00) 地址:中国香港九龙长沙湾长裕街8威尼斯人81818官方网站(中国)有限公司
版权所有:51免备案空间 Copyright All Reserved. © 2005-209 WWW.51MIANBEIAN.COM [站点地图] [网站地图] 站长统计
值班客服QQ:1303358280 值班技术QQ:984651771 电子邮箱:idc@51mianbeian.com

免备案空间
51威尼斯人81818官方网站-威尼斯人81818官方网站-专业免备案空间提供商

威尼斯人81818官方网站|威尼斯人81818官方网站

XML 地图 | Sitemap 地图