dede 顶级栏目链接

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 DEDE建站 正文

使用顶级栏目循环标签(最常用、最推荐)

这是 DedeCMS 系统原生提供的最标准、最安全的方法,它会自动获取所有顶级栏目,并循环输出。

dede 顶级栏目链接
(图片来源网络,侵删)

标签代码:

{dede:channel type='top' row='10'}
    <a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}

参数详解:

  • {dede:channel}:这是调用栏目的核心标签。
  • type='top'这是最关键的参数,它指定了只调用顶级栏目。
  • row='10':表示要调用的栏目数量,'10' 是示例,你可以改成你想要的数字,row='20',如果省略此参数,默认会调用所有顶级栏目。
  • [field:typelink/]:栏目链接,这是系统字段,会自动生成栏目的完整URL。
  • [field:typename/]:栏目名称。

示例:制作一个主导航菜单

假设你想做一个网站顶部的主导航,包含所有顶级栏目。

<div class="main-nav">
    <ul>
        {dede:channel type='top' row='8'}
            <li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></li>
        {dede:channel}
    </ul>
</div>

使用SQL直接查询(更灵活,适合特定场景)

如果你需要更复杂的查询,或者想在特定条件下获取顶级栏目,可以使用SQL标签。

标签代码:

{dede:sql sql='SELECT * FROM dede_arctype WHERE reid=0 ORDER BY sortrank ASC'}
    <a href="[field:typedir function='MakeOneDir(@me)'/]">[field:typename/]</a>
{/dede:sql}

参数详解:

  • {dede:sql}:执行自定义SQL查询的标签。
  • sql='...':SQL查询语句。
    • SELECT * FROM dede_arctype:从 dede_arctype 这张栏目表里查询所有字段。
    • WHERE reid=0这是关键条件reid 字段存储的是栏目的父栏目ID,reid=0 就表示没有父栏目,即顶级栏目。
    • ORDER BY sortrank ASC:按栏目排序字段 sortrank 进行升序排列,确保栏目顺序正确。
  • [field:typedir function='MakeOneDir(@me)'/]typedir 是栏目目录字段,但它可能包含 {cmspath} 这样的变量。function='MakeOneDir(@me)' 是一个函数,用于将 typedir 解析成完整的、可访问的URL,这个功能和方法一中的 typelink 是等效的。
  • [field:typename/]:栏目名称,和方法一中一样。

在列表页或内容页获取当前栏目的顶级栏目链接

你可能不在首页,而是在某个子栏目页或文章页,想获取当前栏目所属的顶级栏目的链接。

标签代码:

{dede:gettopname}
    <a href="[field:typelink/]">[field:typename/]</a>
{/dede:gettopname}

参数详解:

  • {dede:gettopname}:这是一个专门用于获取当前栏目“顶级父栏目”信息的标签。
  • 它会自动判断当前栏目的层级,并找到最顶级的那个栏目。
  • [field:typelink/][field:typename/]:分别输出顶级栏目的链接和名称。

示例应用: 在你的面包屑导航中,你可能想显示“首页 > 顶级栏目 > 当前栏目”,使用这个标签可以轻松获取“顶级栏目”部分。

dede 顶级栏目链接
(图片来源网络,侵删)
<div class="breadcrumb">
    <a href="/">首页</a> > 
    {dede:gettopname}
        <a href="[field:typelink/]">[field:typename/]</a>
    {/dede:gettopname}
    > 
    <a href="{dede:field name='typelink'/}">{dede:field name='typename'/}</a>
</div>

总结与对比

方法 标签代码 优点 缺点 适用场景
顶级栏目循环 {dede:channel type='top'} 最标准、最安全、最简单,系统原生支持,无需关心表结构。 灵活性稍差,只能进行简单的循环。 绝大多数场景,如主导航、页脚链接等。
SQL查询 {dede:sql sql='...'} 非常灵活,可以添加各种复杂条件(如按时间、按ID范围等)。 需要了解数据库表结构,有一定风险(SQL注入,需注意过滤)。 需要特殊筛选或排序的顶级栏目列表。
获取当前顶级栏目 {dede:gettopname} 智能、便捷,能自动定位到当前栏目的顶级父栏目。 只能在列表页或内容页使用,作用域有限。 面包屑导航、当前位置显示等。

重要提示

  1. 表前缀:如果你的 dede_arctype 表有自定义的前缀(cms_arctype),请务必在SQL查询中修改表名。
  2. 缓存:DedeCMS有强大的缓存机制,修改了模板文件后,如果前台页面没有更新,请到后台的“系统 -> 站点缓存管理”中手动更新一下缓存。
  3. 安全性:在使用方法二(SQL查询)时,如果变量来自用户输入(如URL参数),请务必做好过滤,以防SQL注入攻击。

对于99%的需求,方法一都是你的首选,它简单、高效且安全。

dede 顶级栏目链接
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede批量上传图片如何实现?
« 上一篇 03-31
梦织dede下拉菜单怎么用?
下一篇 » 03-31

相关文章

取消
微信二维码
支付宝二维码

目录[+]