如何在DedeCMS中设置栏目跳转到指定列表页面?

DedeCMS所属栏目与返回列表的实现方法可以通过使用标签和模板功能来实现。具体步骤如下:,,1. 打开DedeCMS后台管理界面,进入“模板管理”模块。,2. 在模板管理中找到需要添加所属栏目和返回列表的模板文件,点击编辑。,3. 在模板文件中添加以下代码:,,“,{dede:field name='typeid'/},`,,4. 保存模板文件并更新缓存。,5. 在文章发布或编辑时,选择相应的栏目,系统会自动将该栏目的ID赋值给typeid字段。,6. 在前台页面中,使用以下代码获取所属栏目和返回列表:,,`,{dede:sql name='get_channel'}, SELECT id,typename FROM dede_arctype WHERE id = '[field:typeid/]',{/dede:sql},[field:global runphp='yes'], $typeid = @me('get_channel');, if(is_array($typeid)) {, $typeid = $typeid[0]['id'];, $typename = $typeid[0]['typename'];, } else {, $typeid = '';, $typename = '';, }, $returnurl = 'http://www.example.com'; // 返回列表链接,[/field:global],返回{$typename},`,,$returnurl`变量需要替换为实际的返回列表链接。

在DedeCMS(织梦内容管理系统)中,实现所属栏目与返回列表功能是网站导航和用户体验的重要组成部分,通过合理的方法,可以在任何页面上快速添加“返回列表”和“所在栏目”的链接,使用户能够方便地浏览相关栏目和返回上级列表,下面将详细介绍如何实现这一功能:

如何在DedeCMS中设置栏目跳转到指定列表页面?

DedeCMS 所属栏目与返回列表的实现方法

方法一:使用标签实现返回列表和所在栏目

1、返回列表

代码示例<a href="{dede:type typeid='0' row=1}[field:typelink function='str_replace("/index.html","",@me)' /]{/dede:type}" title="返回{dede:field.typename /}">返回列表</a>

说明:该代码使用了{dede:type} 标签来获取当前文档的类型链接,并通过function='str_replace("/index.html","",@me)' 去除链接中的/index.html,从而生成一个干净的返回列表链接。

2、所在栏目

代码示例<a href="{dede:type typeid='0' row=1}[field:typelink function='str_replace("/index.html","",@me)' /]{/dede:type}" title="所在{dede:field.typename /}">所在栏目</a>

说明:与返回列表类似,这段代码也使用了{dede:type} 标签,但生成的是当前文档所属栏目的链接,并去除/index.html,使其更简洁。

方法二:在任意页面获取某顶级栏目下的二级或三级栏目列表

1、获取二级栏目列表

步骤

/include/inc_functions.php 文件末尾加入以下代码:

“`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 是顶级栏目的ID。

2、获取二级和三级栏目列表(树形菜单)

步骤

/include/inc_functions.php 文件末尾加入以下代码:

“`php

function getProductTree($typeid) {

$linkList = "";

$dsql = new DedeSql(false);

$dsql>SetQuery("select ID,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 .= "

  • “.$row>typename.”
  • ";

    $linkList .= getSonClass($row>ID);

    }

    $dsql>Close();

    如何在DedeCMS中设置栏目跳转到指定列表页面?

    return $linkList;

    }

    function getSonClass($parentid) {

    $linkList = "";

    $dsql = new DedeSql(false);

    $dsql>SetQuery("Select ID,typedir,typename From #@__arctype where reID=’$parentid’ order by sortrank");

    $dsql>Execute();

    while($row=$dsql>GetObject()) {

    $url = GetTypeUrl($row>ID, MfTypedir($row>typedir), $row>isdefault, $row>defaultname, $row>ispart, $row>namerule2);

    $linkList .= "<li class="smallclass"><a href="$url">".$row>typename."</a></li>

    ";

    }

    return $linkList;

    }

    “`

    在模板中使用{dede:channel function='getProductTree(2)'}{/dede:channel} 调用,其中2 是顶级栏目的ID。

    3、获取所有子栏目(含三级栏目)

    步骤

    在模板中使用以下代码:

    “`php

    {dede:channelartlist typeid=’top’ row=’10’}

    <li><a href="{dede:field name=’typeurl’/}">{dede:field name=’typename’ /}</a>

    <ul>

    {dede:sql sql=’select * from dede_arctype where reid =~id~ ‘}

    <li>

    <a href=[field:typedir function=’str_replace("{cmspath}","",@me)’/]>[field:typename/]</a>

    <ul>

    [field:id runphp=’yes’]

    global $dsql;

    $id=@me;

    $sql=’Select * from dede_arctype where reid=’.$id.’ ORDER BY id limit 0,20′;

    $dsql>SetQuery($sql);

    $dsql>Execute();

    while($row = $dsql>GetArray()){

    $url = str_replace("{cmspath}","",$row[‘typedir’]);

    $str .='<li><a href="’.$url.’">’.$row[‘typename’].'</a></li>’;

    @me = $str;

    }

    if(@me == $id){ //避免3级栏目为空时 写出分类ID,这里加以判断

    @me =”;

    }

    [/field:id]

    </ul>

    </li>

    如何在DedeCMS中设置栏目跳转到指定列表页面?

    {/dede:sql}

    </ul>

    </li>

    {/dede:channelartlist}

    “`

    这段代码可以获取指定顶级栏目下的所有二级和三级子栏目,并将其以树形结构展示出来。

    FAQs

    1、如何在首页或其他页面插入某个顶级栏目的下级栏目列表?

    解答:可以通过在/include/inc_functions.php 文件中定义函数getProductClass($typeid),然后在模板中使用{dede:channel function='getProductClass(顶级栏目ID)'}{/dede:channel} 来调用,要插入产品展示这个顶级栏目的下级栏目列表,可以使用{dede:channel function='getProductClass(2)'}{/dede:channel},其中2 是产品展示的栏目ID。

    2、如何获取某个栏目的所有子栏目(包括二级和三级栏目)?

    解答:可以在模板中使用{dede:channelartlist typeid='top' row='10'} 标签,结合嵌套的 SQL 查询语句来实现,具体代码如下:

    “`php

    {dede:channelartlist typeid=’top’ row=’10’}

    <li><a href="{dede:field name=’typeurl’/}">{dede:field name=’typename’ /}</a>

    <ul>

    {dede:sql sql=’select * from dede_arctype where reid =~id~ ‘}

    <li>

    <a href=[field:typedir function=’str_replace("{cmspath}","",@me)’/]>[field:typename/]</a>

    <ul>

    [field:id runphp=’yes’]

    global $dsql;

    $id=@me;

    $sql=’Select * from dede_arctype where reid=’.$id.’ ORDER BY id limit 0,20′;

    $dsql>SetQuery($sql);

    $dsql>Execute();

    while($row = $dsql>GetArray()){

    $url = str_replace("{cmspath}","",$row[‘typedir’]);

    $str .='<li><a href="’.$url.’">’.$row[‘typename’].'</a></li>’;

    @me = $str;

    }

    if(@me == $id){ //避免3级栏目为空时 写出分类ID,这里加以判断

    @me =”;

    }

    [/field:id]

    </ul>

    </li>

    {/dede:sql}

    </ul>

    </li>

    {/dede:channelartlist}

    “`。

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

    (0)
    未希的头像未希新媒体运营
    上一篇 2024-09-29 02:20
    下一篇 2024-09-29 02:27

    发表回复

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

    云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入