dede调用下级栏目

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

{dede:channel}

{dede:channel} 是调用栏目的核心标签,通过设置不同的属性,可以实现调用顶级栏目、下级栏目、同级栏目等多种效果。

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

调用指定栏目的所有直接下级栏目(最常用)

这是最常见的需求,例如在网站的“产品中心”栏目下,列出其所有一级子栏目(如“产品A”、“产品B”、“产品C”)。

适用场景: 在列表页(list_article.htm页(article_article.htm)中,获取当前栏目的所有直接子栏目。

代码示例:

<h2>下级栏目列表</h2>
<ul>
  {dede:channel type='son' currentstyle='
    <li class="current"><a href="[field:typelink/]">[field:typename/]</a></li>
  '}
    <li><a href="[field:typelink/]">[field:typename/]</a></li>
  {/dede:channel}
</ul>

代码详解:

dede调用下级栏目
(图片来源网络,侵删)
  1. {dede:channel type='son' ...}:

    • type='son':这是最关键的属性,表示调用当前栏目的直接下级栏目,如果你想在其他地方调用,需要配合 typeid 属性使用(见方法二)。
  2. currentstyle='...':

    • 这个属性用于高亮显示当前所在的栏目。
    • 当循环的栏目正好是当前页面所在的栏目时,会使用 currentstyle 里的代码。
    • [field:typelink/][field:typename/] 是栏目字段,分别代表栏目的链接和名称。
  3. [field:typename/][field:typelink/]:

    这是栏目标签的底层字段,用于在循环中获取每个子栏目的名称和链接。

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

调用任意指定栏目的下级栏目

有时候你可能想在首页或者某个固定位置,调用某个特定栏目的下级栏目,而不是当前栏目的下级。

适用场景: 在网站首页调用“关于我们”栏目的所有子栏目;或者在“产品中心”列表页调用“产品A”的所有子分类。

代码示例:

假设你要调用栏目ID为 5 的栏目的所有下级栏目。

<h2>产品分类</h2>
<ul>
  {dede:channel typeid='5' type='son' row='8'}
    <li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></li>
  {/dede:channel}
</ul>

代码详解:

  • typeid='5':

    • 这个属性指定了要查询的父栏目的ID,你需要将 5 替换为你自己想要调用的栏目的ID。
    • 如何获取栏目ID? 登录织梦后台,【栏目管理】 -> 点击要查看的栏目名称,浏览器地址栏中的 cid=数字 就是该栏目的ID。
  • row='8':

    • 这个属性用于限制输出的栏目数量,'8' 表示只显示前8个子栏目,如果不需要限制,可以去掉这个属性。

调用当前栏目的所有下级栏目(包括多级)

如果你的栏目结构是多级的(产品 -> 电子产品 -> 手机 -> iPhone),而你想在“电子产品”页面列出其下的所有层级的子栏目(包括“手机”和“iPhone”),而不是仅仅列出直接子栏目“手机”。

适用场景: 生成一个完整的、多级的栏目导航树。

代码示例:

<h2>完整栏目树</h2>
<ul>
  {dede:channel type='sun' currentstyle='
    <li class="current"><a href="[field:typelink/]">[field:typename/]</a></li>
  '}
    <li><a href="[field:typelink/]">[field:typename/]</a></li>
  {/dede:channel}
</ul>

代码详解:

  • type='sun':
    • sun 是 "son" 的扩展,表示调用当前栏目的所有下级栏目,不限层级,会递归查找所有子孙栏目。

调用同级栏目(兄弟栏目)

调用与当前栏目处于同一层级的其他栏目。

适用场景:页的侧边栏,列出“相关栏目”,即与当前栏目平行的其他栏目。

代码示例:

<h2>相关栏目</h2>
<ul>
  {dede:channel type='self' currentstyle='
    <li class="current"><a href="[field:typelink/]">[field:typename/]</a></li>
  '}
    <li><a href="[field:typelink/]">[field:typename/]</a></li>
  {/dede:channel}
</ul>

代码详解:

  • type='self':
    • 表示调用与当前栏目同级的栏目。

总结与对比

标签属性 功能描述 常用场景
type='son' 调用指定栏目的直接下级栏目。 列表页侧边栏、面包屑下方导航。
typeid='数字' 配合 type 使用,指定要查询的父栏目ID 在首页或其他页面调用特定栏目的子栏目。
type='sun' 调用指定栏目的所有下级栏目(多级)。 生成多级导航树。
type='self' 调用与当前栏目同级的栏目。 内容页的“相关/兄弟栏目”列表。
currentstyle 高亮显示当前栏目。 任何需要突出显示当前所在位置的栏目列表。
row='数字' 限制输出的栏目数量。 当子栏目过多时,只显示前N个。

实用技巧

  1. 如何获取栏目ID?

    • 进入后台【栏目管理】,点击目标栏目的名称,浏览器地址栏的 cid=XXX 中的 XXX 就是ID。
  2. 如何为栏目添加自定义字段?

    • 如果需要在栏目列表中显示更多信息(如栏目图片、简介等),可以在后台【核心】->【内容模型管理】->【栏目字段管理】中添加自定义字段,然后在模板中通过 [field:自定义字段名/] 调用。
  3. 如何判断是否有下级栏目?

    • 有时候你可能想在有下级栏目时才显示这个列表,可以使用PHP判断:
      {dede:sql sql='SELECT id FROM dede_arctype WHERE reid=~typeid~ LIMIT 1'}
      {if dede:field name='id'/}
      <!-- 如果查询结果不为空,说明有下级栏目 -->
      <h2>下级栏目</h2>
      <ul>
        {dede:channel type='son'}
          <li><a href="[field:typelink/]">[field:typename/]</a></li>
        {/dede:channel}
      </ul>
      {/if}
      {/dede:sql}
    • 这个方法通过SQL查询当前栏目(~typeid~是织梦的内置变量)下是否有子栏目,有则执行输出。

希望这份详细的指南能帮助你熟练地在织梦中调用下级栏目!

-- 展开阅读全文 --
头像
dede顶部空白怎么解决?
« 上一篇 04-28
dede畅言模块哪里能下载?
下一篇 » 04-28
取消
微信二维码
支付宝二维码

目录[+]