互补网网专做高品质CMS教程,所有教程均为站长亲测有效后发布。
您当前所在位置:互补网首页 > DEDECMS > DEDE标签调用 >

dede 5.7arclist标签调用副栏目文章的方法

发布时间:2019-05-11热度:0
替换为:最近一段时间以来,有不少时间都在折腾,对其进行了不少的优化工作,以便其适应我的应用要求。在这其中,也遇到了不少的问题。譬如:DEDECMS根据副栏目进行文章调用的问题。
DEDECMS中一个文章可以同时属于两个栏目,即一个主栏目一个副栏目,{dede:arclist} 属性中可以通过typeid进行主栏目有效性筛选,但是有时我们却想根据副栏目进行筛选,查了dedecms的在线用户手册发现没有此功能,最后搜索到一个有效地解决办法。只需修改标签对应的源文件。DEDECMS
查找 dedecmsROOT/include/taglib/arclist.lib.php 文件,大概在第261行代码处。

$orwheres[] = " arc.typeid in ($typeid) "; 

替换为:
$vicewheres = "";         
               foreach($typeid as $tid){         
                $liketypeid2 = ",".$tid.",";         
                   $vicewheres.= " or CONCAT(',',arc.typeid2,',') like '%$liketypeid2%' ";         
               }         
            if($vicewheres!="")         
                $orwheres[] = " (arc.typeid in ($typeid) $vicewheres) ";         
            else         
                $orwheres[] = " arc.typeid in ($typeid) ";
查找大概303行
$CrossID=='') $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).')';         
else $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).','.$CrossID.')';
替换为
//副栏目处理         
                $vicewheres = "";         
                $typeids = explode(",",GetSonIds($typeid));         
                $crossids = explode(",",$CrossID);         
                $typeidss = array_merge($typeids,$crossids);         
                $typeidss = array_unique($typeidss);         
                foreach($typeidss as $tid){         
                    $liketypeid2 = ",".$tid.",";         
                    $vicewheres.= " or CONCAT(',',arc.typeid2,',') like '%$liketypeid2%' ";         
                }         
                if($CrossID==''){         
                    if($vicewheres!="")         
                        $orwheres[] = ' (arc.typeid in ('.GetSonIds($typeid).') '.$vicewheres.') ';         
                    else         
                        $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).') ';         
                }else{         
                    if($vicewheres!="")         
                        $orwheres[] = ' (arc.typeid in ('.GetSonIds($typeid).','.$CrossID.') '.$vicewheres.') ';         
                    else         
                        $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).','.$CrossID.') ';         
                } 
示例:{dede:arclist typeid=’2,3,4′}….{/dede:arclist}
通过以上办法,有效地解决了DEDECMS最新版本V5.7正式版不支持通过arclist标签调用副栏目文章的问题。
本文地址:http://www.25923.com/dedecms/biaoqian/051119.html(转载请保留)