dede顶级栏目标签

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

在 DedeCMS 中,获取顶级栏目的核心方法是利用 channel 标签,并通过特定的属性来筛选出顶级栏目。

核心标签:{dede:channel}

{dede:channel} 是 DedeCMS 中最常用、最灵活的栏目列表标签,它默认会显示当前栏目的所有子栏目,但通过 typeidreid 属性的组合,可以精确地控制显示哪些栏目。


使用 typeid='top'(最简单直接)

这是最常用、最简单的方法,专门用于获取所有顶级栏目。

标签代码:

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

代码解析:

  • {dede:channel ...}:调用栏目列表。
  • type='top':这是最关键的属性,它告诉 DedeCMS 只获取顶级栏目。
  • row='10':可选属性,表示只显示前 10 个顶级栏目,如果不写,则显示所有顶级栏目。
  • [field:typelink/]:栏目链接,等同于 [field:link/]
  • [field:typename/]:栏目名称。

示例:在一个页面(如首页)中显示所有顶级栏目导航

<div class="mainnav">
    <ul>
        {dede:channel type='top'}
            <li><a href="[field:typelink/]">[field:typename/]</a></li>
        {dede:channel}
    </ul>
</div>

使用 typeidreid='0'(更灵活,推荐)

这种方法更底层,也更具灵活性,可以与其他条件结合使用。

标签代码:

{dede:channel typeid='0' reid='0'}
    <a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}

代码解析:

  • typeid='0'typeid 默认是当前栏目的 ID,当设置为 0 时,表示从全站所有栏目中进行查询。
  • reid='0'reid 是父级栏目的 ID,当设置为 0 时,表示查询父级栏目为 0 的栏目,也就是顶级栏目。

这两个条件组合起来,效果等同于 type='top',但提供了更多的扩展性。


高级用法与常用属性

{dede:channel} 标签非常强大,可以结合多种属性实现复杂的需求。

限制显示数量

使用 row 属性来限制显示的栏目数量。

{dede:channel type='top' row='8'}
    <!-- 只显示8个顶级栏目 -->
{/dede:channel}

排序方式

使用 sort 属性来指定栏目的排序方式。

  • sort='hot'sort='click':按点击量从高到低排序。
  • sort='sortrank':按后台“排序”字段的值排序(默认方式)。
  • sort='id':按栏目ID排序。
{dede:channel type='top' sort='hot' row='10'}
    <!-- 按点击量排序,显示前10个顶级栏目 -->
{/dede:channel}

自栏目标签(获取更多信息)

如果需要显示栏目的更多属性(如栏目图片、描述等),可以使用自栏目标签 {dede:channelartlist} 或在 channel 标签中使用 itemstyle 属性。

使用 channel 标签 + itemstyle

{dede:channel type='top' row='6'}
    <li>
        <a href="[field:typelink/]">
            <img src="[field:picname/]" alt="[field:typename/]">
            <span>[field:typename/]</span>
        </a>
    </li>
{/dede:channel}

注意: 这种方式要求栏目在后台设置了“栏目图片”,否则 [field:picname/] 为空。

使用 channelartlist 标签(更推荐用于栏目列表)

{dede:channelartlist} 通常用于调用一个顶级栏目及其下的子栏目,但也可以单独调用顶级栏目。

{dede:channelartlist typeid='top' row='6'}
    <li>
        <a href="{dede:field name='typeurl'/}">
            <img src="{dede:field name='picname'/}" alt="{dede:field name='typename'/}">
            <span>{dede:field name='typename'/}</span>
        </a>
    </li>
{/dede:channelartlist}

代码解析:

  • typeid='top':同样是调用顶级栏目。
  • {dede:field name='typeurl'/}:等同于 [field:typelink/]
  • {dede:field name='picname'/}:栏目图片。
  • {dede:field name='typename'/}:栏目名称。

常见问题与注意事项

  1. 为什么 type='top' 没有效果?

    • 检查缓存:这是最常见的原因,修改模板后,务必在 DedeCMS 后台点击“生成” -> “更新HTML” -> “更新主页HTML” 或 “更新栏目HTML”,清除缓存。
    • 检查栏目设置:确保你的栏目确实是在顶级,没有被错误地设置为某个栏目的子栏目。
    • 标签拼写错误:确保 type='top' 中的 top 是小写,并且没有多余的空格。
  2. typeidreid 的区别是什么?

    • typeid:指定查询的“起始范围”。typeid='0' 表示全站范围。
    • reid:指定查询的“父级条件”。reid='0' 表示只查询顶级栏目。
    • 两者结合使用,可以精确地定位到你想要的栏目集合。
  3. 如何调用指定顶级栏目(例如只调用 ID 为 1 的顶级栏目)?

    • 使用 typeid 属性,直接指定栏目 ID。
{dede:channel typeid='1'}
    <!-- 只调用 ID 为 1 的这个顶级栏目 -->
    <a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
需求 推荐标签 关键属性
获取所有顶级栏目 {dede:channel} type='top'typeid='0' reid='0'
获取指定数量的顶级栏目 {dede:channel} type='top' + row='数字'
按点击量排序的顶级栏目 {dede:channel} type='top' + sort='hot'
获取带图片的顶级栏目 {dede:channelartlist}{dede:channel} typeid='top' + [field:picname/]

对于绝大多数情况,使用 {dede:channel type='top'} 是最简单、最直接的选择,当你需要更复杂的逻辑或更多栏目信息时,再考虑使用 typeidreidsort 等属性或 channelartlist

-- 展开阅读全文 --
头像
dede手机站不更新
« 上一篇 今天
c index r语言
下一篇 » 今天

相关文章

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