{dede:channel}
调用栏目链接主要使用 {dede:channel} 这个循环标签,它的基本语法如下:

(图片来源网络,侵删)
{dede:channel type='栏目类型' row='显示数量'}
<a href='[field:typelink/]'>[field:typename/]</a>
{/dede:channel}
下面我们来看不同场景下的具体用法。
调用顶级栏目(最常用)
这是最常见的用法,比如在网站主导航栏中调用所有的一级栏目。
标签代码:
{dede:channel type='top' row='8'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
参数解释:

(图片来源网络,侵删)
type='top':这是最关键的参数,表示只调用顶级栏目。row='8':表示调用的栏目数量,这里是8个,如果省略,默认调用所有顶级栏目。[field:typelink/]:这是栏目链接的底层模板变量,它会输出当前栏目的完整 URL 地址。[field:typename/]:这是栏目名称的底层模板变量,它会输出当前栏目的名称。
示例场景:网站主导航
<ul id="mainnav">
{dede:channel type='top' row='8'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
调用指定栏目的子栏目
如果你想在某个栏目页(产品中心”)里显示它的所有子栏目(产品A”、“产品B”),可以使用 reid 参数。
前提条件: 你必须知道“产品中心”这个栏目的 ID,你可以在 DedeCMS 后台的【栏目管理】中找到并记下这个 ID。
标签代码:

(图片来源网络,侵删)
假设“产品中心”的栏目 ID 是 5。
<h3>产品系列</h3>
<ul>
{dede:channel type='son' reid='5'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{dede:channel}
</ul>
参数解释:
type='son':表示调用指定栏目的子栏目。reid='5':这是父栏目的 ID。reid是 "relative ID" 的缩写,表示关联的父栏目 ID。请务必将5替换成你自己的栏目 ID。
调用当前栏目的同级栏目(兄弟栏目)
有时你可能想在当前栏目页显示与它同级的其他栏目,这需要结合 typeid 参数,typeid 通常由 {dede:field} 标签自动获取当前栏目 ID。
标签代码:
<h3>相关栏目</h3>
<ul>
{dede:channel type='self' typeid=''}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{dede:channel}
</ul>
参数解释:
type='self':表示调用与指定栏目同级的栏目。typeid='':这里留空,DedeCMS 会自动解析当前页面的栏目 ID 并填入,这是最标准的写法。
调用所有栏目(包括顶级和子级)
如果你需要一个网站地图或者全站栏目列表,可以使用 type='all'。
标签代码:
<h3>全站栏目</h3>
<ul>
{dede:channel type='all'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{dede:channel}
</ul>
参数解释:
type='all':表示调用所有层级的栏目,从顶级栏目开始,递归显示其所有子栏目。
高级技巧与常用属性
{dede:channel} 标签还有很多有用的属性,可以让你的调用更灵活。
自定义样式(当前栏目高亮)
这是导航栏必备的功能,我们可以使用 currentstyle 属性来为当前栏目所在的链接添加一个特殊的 CSS 类。
标签代码:
<ul id="mainnav">
{dede:channel type='top' row='8' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{dede:channel}
</ul>
参数解释:
currentstyle='...':这个属性用于定义当前栏目的 HTML 模板。~typelink~:是[field:typelink/]的简写。~typename~:是[field:typename/]的简写。- 当访问者处于某个栏目页时,
{dede:channel}会自动将当前栏目的<li>替换为currentstyle中定义的内容,你可以给这个<li>添加class="active",然后在 CSS 中定义.active的样式。
排除指定栏目
如果你想在调用栏目时排除掉某个栏目(首页”或“关于我们”),可以使用 typeid 参数来指定要包含的栏目 ID,或者用 notypeid 来排除。
使用 typeid 包含指定栏目:
假设你只想调用 ID 为 1, 3, 5 的栏目。
{dede:channel typeid='1,3,5'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
使用 notypeid 排除指定栏目:
假设你有一个 ID 为 10 的栏目“内部通知”,不想在导航中显示。
{dede:channel type='top' notypeid='10'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
总结表格
| 需求 | 标签代码 | 关键参数 |
|---|---|---|
| 调用顶级栏目 | {dede:channel type='top'} |
type='top' |
| 调用指定栏目的子栏目 | {dede:channel type='son' reid='5'} |
type='son', reid='父栏目ID' |
| 调用当前栏目的同级栏目 | {dede:channel type='self' typeid=''} |
type='self', typeid 留空自动获取 |
| 调用所有栏目 | {dede:channel type='all'} |
type='all' |
| 当前栏目高亮 | {dede:channel ... currentstyle="<li class='active'>~typename~</li>"} |
currentstyle 属性 |
希望这份详细的指南能帮助你完全掌握在 DedeCMS 中调用栏目链接的方法!
