php,{dede:channel type='top' row='8' col='2'},[field:typename/],{/dede:channel},
`,,在这个示例中:,
{dede:channel type=’top’ row=’8′ col=’2′} 是DedeCMS的自定义标签,用于获取顶级栏目列表。,
[field:typeurl/] 和
[field:typename/] 是字段标记,分别表示栏目的链接和名称。,,你可以根据具体需求调整参数,如
row控制显示的行数,
col`控制每行的列数等。,,请确保你的模板文件包含这些标签,并正确调用以生成栏目列表菜单。 1、获取任意栏目N级列表链接树形菜单
在DedeCms中,通过编写自定义函数并调用系统API,可以实现获取任意栏目N级列表的链接树形菜单,首先需要在includechannelunit.func.php文件中添加相应的代码,然后在模板中使用标签调用该函数。
2、编写自定义函数
在includechannelunit.func.php文件底部添加以下代码:
function getProductTree($typeid) { $linkList = ""; $dsql = new DedeSql(false); $dsql>SetQuery("select ID,typedir,typename,isdefault from dede_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 .= " <div class="firsttype"><a href="$typelink"><b>".$row>typename."</b></a></div> "; $linkList .= getSonClass($row>ID); } $dsql>Close(); return $linkList; } // 获得小类栏目链接 function getSonClass($parentid) { $linkList = ""; $dsql = new DedeSql(false); $dsql>SetQuery("Select ID,typedir,typename,isdefault From dede_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> "; $linkList .= getSonClass2($row>ID); } return $linkList; } function getSonClass2($parentid) { $linkList = ""; $dsql = new DedeSql(false); $dsql>SetQuery("Select ID,typedir,typename,isdefault From dede_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> "; $linkList .= getSonClass3($row>ID); } return $linkList; } function getSonClass3($parentid) { $linkList = ""; $dsql = new DedeSql(false); $dsql>SetQuery("Select ID,typedir,typename,isdefault From dede_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> "; } return $linkList; } /*树形栏目补充*/
3、在模板中调用函数
在模板文件中使用以下代码调用自定义函数:
{dede:channel function='getProductTree(2)'}{/dede:channel}
getProductTree(2)
中的2
是产品展示的栏目ID,可以根据实际情况进行修改。
4、伪静态支持
如果需要支持伪静态,可以在getProductClass
函数中进行相应修改:
function getProductClass($typeid) { $linkList = ""; $dsql = new DedeSql(false); $dsql>SetQuery("select ID,typename 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); $linkList .= "<li>·<a href="$typelink">".$row>typename."</a></li> "; } $dsql>Close(); return $linkList; }
5、常见问题解答
问题1:如何获取顶级栏目下的二级栏目列表?
答案:在/include/inc_functions.php
文件中添加以下代码:
function getProductClass($typeid) { $linkList = ""; $dsql = new DedeSql(false); $dsql>SetQuery("select typedir,typename 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); $linkList .= "<li>·<a href="$typelink">".$row>typename."</a></li> "; } $dsql>Close(); return $linkList; }
然后在模板中使用{dede:channel function='getProductClass(2)'}{/dede:channel}
调用即可。
问题2:如何在首页或其他页面插入顶级栏目的下级栏目列表?
答案:在/include/inc_functions.php
文件中添加以下代码:
function getProductClass($typeid) { $linkList = ""; $dsql = new DedeSql(false); $dsql>SetQuery("select ID,typename 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); $linkList .= "<li>·<a href="$typelink">".$row>typename."</a></li> "; } $dsql>Close(); return $linkList; }
然后在模板中使用{dede:channel function='getProductClass(2)'}{/dede:channel}
调用即可。
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。