濮阳杆衣贸易有限公司

主頁(yè) > 網(wǎng)站建設(shè) > 建站知識(shí) > 織夢(mèng)多個(gè)欄目arclist調(diào)用副欄目不顯示的解決辦法

織夢(mèng)多個(gè)欄目arclist調(diào)用副欄目不顯示的解決辦法

POST TIME:2017-11-13 00:18

織夢(mèng)arclist調(diào)用副欄目不顯示的解決辦法:

打開(kāi)/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"的情況下不顯示副欄目的問(wèn)題, 如果typeid=“2,3,8”,有多個(gè)欄目需要調(diào)用副欄目就不行了怎么解決這個(gè)問(wèn)題,找到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) ";
問(wèn)題產(chǎn)生的原因,看下arclist.lib.php原始代碼:(typeid為主欄目id, typeid2為副欄目id)
找到246行:
//指定了多個(gè)欄目時(shí),不再獲取子類(lèi)的id if( preg_match('#,#', $typeid) ) //如果typeid字段匹配逗號(hào), 就是說(shuō)typeid調(diào)用多個(gè)欄目,例如:typeid=“2,3,8”
{
//指定了getall屬性或主頁(yè)模板例外
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)";//導(dǎo)致typeid='2,3,8'情況下不能調(diào)用副欄目問(wèn)題產(chǎn)生的地方
}
else //如果typeid不匹配逗號(hào),就是調(diào)用一個(gè)欄目 例如 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.')';//導(dǎo)致typeid='2'情況下不能調(diào)用副欄目問(wèn)題產(chǎn)生的地方
}


上一篇:dedecms5.1 GBK升級(jí)到dedecms5.6最新版過(guò)程分享

下一篇:織夢(mèng)數(shù)據(jù)庫(kù)類(lèi)常用操作函數(shù)getone()、Execute()剖析

收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢(xún)

  • 400-1100-266
泰州市| 深圳市| 城市| 新沂市| 巍山| 奇台县| 涞水县| 额尔古纳市| 龙川县| 建瓯市| 罗城| 依兰县| 乐都县| 江源县| 香港 | 化德县| 温泉县| 应城市| 新邵县| 临桂县| 金昌市| 黔西县| 黑水县| 镇坪县| 信丰县| 临泉县| 嘉禾县| 吴江市| 太仓市| 扎赉特旗| 通河县| 清苑县| 连平县| 德惠市| 太湖县| 化州市| 平阳县| 大足县| 玛曲县| 武定县| 台东市|