admin 发表于 2012-12-10 16:16:12

dedecms5.7一级分类、二级分类同时调用方法

直接上图:http://hiphotos.baidu.com/%BB%D8%D2%E4%D6%AE%E1%DB/pic/item/6cc78d11b912c8fc39752b77fc039245d7882150.jpg
调用方法:<font color="#454545"><font face="tahoma, helvetica, arial"><font style="font-size: 14px">      {dede:channelartlist typeid='2'}
      <li class="First"><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></li>
                {dede:channel type='son' noself='yes'}
                <li class="Second"><a href=""></a></li>
                {/dede:channel}
      {/dede:channelartlist}</font></font></font>此方法直接使用会出现一个问题:当其中一个分类没有子分类的时候,会在其子分类的位置显示出所有的一级分类解决办法:去掉include/taglib/channel.lib.php中以下内容即可解决    //如果用子栏目模式,当没有子栏目时显示同级栏目<font color="#454545"><font face="tahoma, helvetica, arial"><font style="font-size: 14px"><p>    if($type=='son' && $reid!=0 && $totalRow==0)</p><p>    {</p><p>      $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath</p><p>            FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";</p><p>      $dsql->SetQuery($sql);</p><p>      $dsql->Execute();</p><p>    }</p></font></font></font>————————————————————————————————————————————————————————————
以下方法在5.6版本适用,后来升级到5.7V后发现用不了,具体不知道啥原因,有兴趣的朋友可以研究一下:在\include\channelunit.func.php文件底部添加如下代码:
<font color="#454545"><font face="tahoma, helvetica, arial"><font style="font-size: 14px">//树形栏目补充,获取二级,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 .= "\n<div class=\"firsttype\"><a href=\"$typelink\"><b>".$row->typename."</b></a></div>\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 .= "<li class=\"secondtype\"><a href=\"$typelink\">".$row->typename."</a></li>\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 .= "<li class=\"thirdtype\"><a href=\"$typelink\">".$row->typename."</a></li>\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 .= "<li class=\"fourthtype\"><a href=\"$typelink\">".$row->typename."</a></li>\n";
}
return $linkList;
}</font></font></font>在模板里用
{dede:channel function='getProductTree(2)'}{/dede:channel} 
调用即可。这里getProductTree(2)中的 2 是产品展示的栏目ID。如果你的是其他的,请作相应修改。
页: [1]
查看完整版本: dedecms5.7一级分类、二级分类同时调用方法