dede如何调用顶级栏目代码?

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

使用 {dede:channel} 标签(最常用、最推荐)

这是最标准、最灵活的方法,通过设置 typeidreid 参数来精确控制。

dede 调用顶级栏目 代码
(图片来源网络,侵删)

调用所有顶级栏目

这是最常见的需求,比如在网站首页的顶部导航栏显示所有一级栏目。

代码:

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

代码解析:

  • {dede:channel}: 这是调用栏目的基本标签。
  • type='top': 这是核心参数,表示只调用顶级栏目(一级栏目)。
  • row='8': 表示调用的栏目数量,'8' 是一个示例,你可以改成你需要的数字,如 0 表示调用所有。
  • [field:typeurl/]: 输出栏目的链接地址。
  • [field:typename/]: 输出栏目的名称。

示例效果: 假设你的顶级栏目有“首页”、“产品中心”、“新闻动态”、“关于我们”、“联系我们”,那么这段代码会输出:

dede 调用顶级栏目 代码
(图片来源网络,侵删)
<li><a href="/product/">产品中心</a></li>
<li><a href="/news/">新闻动态</a></li>
<li><a href="/about/">关于我们</a></li>
<li><a href="/contact/">联系我们</a></li>

(注意:首页通常不通过这个标签调用,而是直接写在HTML中)


调用指定顶级栏目及其子栏目

有时候我们需要显示某个一级栏目,并且同时显示它的所有直接子栏目(二级栏目),点击“产品中心”后,在左侧显示其所有产品分类。

代码:

{dede:channel type='son' typeid='2'}
    <li><a href="[field:typeurl/]">[field:typename/]</a></li>
{/dede:channel}

代码解析:

  • type='son': 表示调用指定栏目的直接子栏目
  • typeid='2': 这是核心参数'2' 是你想要调用的那个顶级栏目本身的ID,你需要登录DedeCMS后台,在“栏目管理”中找到该栏目并查看其ID号。

示例效果: 如果栏目ID为 2 的顶级栏目是“产品中心”,它下面有三个子栏目“分类A”、“分类B”、“分类C”,那么这段代码会输出:

<li><a href="/product/a/">分类A</a></li>
<li><a href="/product/b/">分类B</a></li>
<li><a href="/product/c/">分类C</a></li>

使用 {dede:global} 标签(用于当前位置)

这种方法通常用在文章内容页或列表页,用来显示“首页 > 一级栏目 > 二级栏目”这样的面包屑导航。

代码:

{dede:field name='position'/}

代码解析:

  • 这个标签会自动解析当前内容所在的栏目路径。
  • 它会自动调用从顶级栏目到当前栏目的所有层级。

示例效果: 如果当前文章位于“新闻动态 > 公司新闻”下,那么它会输出:

<a href='/'><i class='fa fa-home'></i> 首页</a> > <a href='/news/'>新闻动态</a> > 公司新闻

从这个输出中,你可以清晰地看到“新闻动态”就是顶级栏目。


使用SQL直接查询(最灵活,适合复杂场景)

当你需要对栏目数据进行二次处理(比如按特定顺序排序、结合其他条件查询)时,可以直接使用SQL查询。

代码:

{dede:sql sql='SELECT id,typename,typedir FROM `dede_arctype` WHERE reid=0 AND ishidden<>1 ORDER BY id'}
    <li><a href="[field:typedir function='str_replace("{cmspath}","",@me)'/]">[field:typename/]</a></li>
{/dede:sql}

代码解析:

  • {dede:sql}: 执行自定义SQL语句的标签。
  • sql='...': 里面的SQL语句是关键。
    • SELECT id,typename,typedir FROM dede_arctype: 从栏目表 dede_arctype (你的表前缀可能是 dede_ 或其他) 中选择ID、名称和目录路径。
    • WHERE reid=0: 这是核心条件reid 字段表示“父栏目ID”,0 就代表顶级栏目。
    • AND ishidden<>1: 排除在后台设置为“隐藏”的栏目。
    • ORDER BY id: 按栏目ID排序。
  • [field:typedir function='str_replace("{cmspath}","",@me)'/]: 因为 typedir 字段中可能包含系统变量 {cmspath},需要用 function 函数将其替换掉,才能得到正确的URL。
    • @me 代表当前字段的原始值。
    • str_replace 是PHP的字符串替换函数。

总结与对比

方法 标签/代码 优点 缺点 适用场景
方法一 {dede:channel type='top'} 最推荐,代码简洁,官方标准,效率高 功能相对单一 大部分场景,如主导航、侧边栏一级分类。
方法一(变体) {dede:channel type='son' typeid='x'} 灵活,可以调用指定栏目的子栏目 需要知道父栏目的ID 显示某个特定栏目下的子分类。
方法二 {dede:field name='position'} 自动获取路径,方便实现面包屑导航 无法独立调用顶级栏目列表 内容页或列表页的当前位置(面包屑)。
方法三 {dede:sql ...} 最灵活,可以结合任何SQL条件进行复杂查询 代码稍复杂,有一定SQL要求,效率略低于标签 需要特殊排序、特殊筛选或进行数据处理的复杂页面。

对于绝大多数日常开发需求,方法一 ({dede:channel type='top'}) 是您应该首先选择的方案,它简单、高效且易于维护。

-- 展开阅读全文 --
头像
C语言中conversion是什么意思?
« 上一篇 01-25
织梦免费响应式模板下载
下一篇 » 01-25

相关文章

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

目录[+]