1. 程式人生 > >織夢dedecms同時呼叫一級分類、二…

織夢dedecms同時呼叫一級分類、二…

一、如何才能將DEDECMS分類資訊中所有的欄目,包括一級和二級全部都調用出來呢。其實,通過的 channelartilist 標籤是完全可以實現的,下面就是呼叫程式碼:

{dede:channelartlist typeid='1,10,24,35,51,56' } //手動把一級欄目的id寫好
{dede:type}[field:typename/]{/dede:type}
  • {dede:channel type='son' noself='yes'}
  • [field:typename/]
  • {/dede:channel}
{/dede:channelartlist}

通過上面的標籤可以調用出所有的欄目
二。直接上圖:

dede同時呼叫一級分類、二級分類
呼叫方法:

{dede:channelartlist typeid='2'}
{dede:field name='typename'/}
{dede:channel type='son' noself='yes'}
[field:typename/]
{/dede:channel}
{/dede:channelartlist}

此方法直接使用會出現一個問題:當其中一個分類沒有子分類的時候,會在其子分類的位置顯示出所有的一級分類
解決辦法:去掉include/taglib/channel.lib.php中以下內容即可解決

//如果用子欄目模式,當沒有子欄目時顯示同級欄目
if($type=='son' && $reid!=0 && $totalRow==0)
{
$
sql
 = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line "; $dsql->SetQuery($sql); $dsql->Execute(); }

—————————————————————————————————————————————————————————以下方法在5.6版本適用,後來升級到5.7V後發現用不了,具體不知道啥原因,有興趣的朋友可以研究一下:
在\include\channelunit.func.php檔案底部新增如下程式碼:

//樹形欄目補充,獲取二級,san級,四級欄目列表
function getProductTree($typeid)
{
$linkList = "";
$dsql = new DedeSql(false);
$dsql->SetQuery("select ID,typedir,typename,isdefault from #@__arctype where reID = '$typeid' order by sortrank");
$dsql->Execute();
while($row=$dsql->GetObject())
{
$typelink = GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "\ntype\">".$row->typename."\n\n";
$linkList .= getSonClass($row->ID);
}
$dsql->Close();
return $linkList;
}
//獲得小類欄目連結
function getSonClass($parentid)
{
$linkList = "";
$dsql = new DedeSql(false);
$dsql->SetQuery("Select ID,typedir,typename,isdefault From #@__arctype where reID='$parentid' order by sortrank");
$dsql->Execute($parentid);
while($row=$dsql->GetObject($parentid))
{
$typelink = GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "".$row->typename."\n";
$linkList .= getSonClass2($row->ID);
}
return $linkList;
}
function getSonClass2($parentid)
{
$linkList = "";
$dsql = new DedeSql(false);
$dsql->SetQuery("Select ID,typedir,typename,isdefault From #@__arctype where reID='$parentid' order by sortrank");
$dsql->Execute($parentid);
while($row=$dsql->GetObject($parentid))
{
$typelink = GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "".$row->typename."\n";
$linkList .= getSonClass3($row->ID);
}
return $linkList;
}
function getSonClass3($parentid)
{
$linkList = "";
$dsql = new DedeSql(false);
$dsql->SetQuery("Select ID,typedir,typename,isdefault From #@__arctype where reID='$parentid' order by sortrank");
$dsql->Execute($parentid);
while($row=$dsql->GetObject($parentid))
{
$typelink = GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "".$row->typename."\n";
}
return $linkList;
}

模板裡用
{dede:channel function=’getProductTree(2)’}{/dede:channel}
呼叫即可。這裡getProductTree(2)中的 2 是產品展示的欄目ID。如果你的是其他的,請作相應修改。