如何在DedeCms中获取栏目列表菜单?

DedeCMS中,获取栏目列表菜单的方法通常涉及使用系统内置的标签或函数。以下是一个简单的示例代码,演示如何使用这些方法:,,“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:如何获取顶级栏目下的二级栏目列表?

如何在DedeCms中获取栏目列表菜单?

答案:在/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}调用即可。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1103323.html

(0)
未希的头像未希新媒体运营
上一篇 2024-09-29 19:40
下一篇 2024-09-29 19:42

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入