使用系统内置的“栏目导航”标签(最简单、最推荐)
这是 DedeCMS 设计之初就考虑好的标准方法,最简单,也最不容易出错。

适用场景:只需要在首页顶部显示一级栏目(主栏目),并且不需要复杂的样式。
操作步骤:
-
登录后台:使用管理员账号登录您的 DedeCMS 后台。
-
进入模板管理:在左侧菜单栏中,找到
模板->模板管理。
(图片来源网络,侵删) -
选择首页模板:在模板列表中,找到您当前正在使用的首页模板文件(通常是
index.htm),点击右侧的修改按钮。 -
插入标签代码:在您希望显示栏目的位置(通常是
<header>或<nav>标签内),插入以下 DedeCMS 标签代码:{dede:channel type='top' row='8'} <a href="[field:typelink/]">[field:typename/]</a> {/dede:channel} -
保存并更新:
- 点击模板编辑器底部的
保存按钮。 - 返回到 DedeCMS 后台首页,在左侧菜单栏找到
生成->更新主页HTML。 - 点击
更新主页HTML按钮,等待生成完成。
- 点击模板编辑器底部的
-
查看效果:现在访问您的网站首页,应该就能看到主栏目了。
(图片来源网络,侵删)
标签代码详解
{dede:channel type='top' row='8'}:这是调用栏目的核心标签。type='top':这是关键参数,表示只调用顶级栏目(主栏目),如果省略这个参数,它会调用包括所有子栏目在内的所有栏目。row='8':表示显示的栏目数量。'8'是一个示例,您可以改成您想显示的数量,'10',如果想让所有主栏目都显示,可以去掉row参数。
[field:typelink/]:这是一个字段标签,用于输出栏目的完整链接地址(https://www.yoursite.com/about/)。[field:typename/]:这是一个字段标签,用于输出栏目的名称(“关于我们”)。<a href="...">...</a>:这是标准的 HTML 链接标签,将栏目名称包裹起来,使其可以点击跳转。
自定义带样式的栏目导航(最灵活)
如果您需要对栏目导航进行更复杂的样式设计(比如添加当前栏目高亮、下拉菜单等),就需要对标签进行一些改造。
场景:希望栏目有特定的样式,并且希望当前所在的栏目能高亮显示。
操作步骤:
-
登录后台并修改首页模板:同方法一的步骤 1、2、3。
-
插入自定义样式的代码:
<nav class="main-nav"> <ul> {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> </nav> -
代码解析:
-
我们给栏目加上了
<ul>和<li>结构,这是制作导航菜单的标准做法,方便用 CSS 进行样式控制。 -
currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>":这是一个非常强大的参数。- 它的作用是:如果当前页面(比如首页)是这个栏目,或者这个栏目的子栏目,那么就会使用
currentstyle里的代码来代替默认的<li>代码。 ~typelink~和~typename~是currentstyle专用的写法,代表栏目的链接和名称。
- 它的作用是:如果当前页面(比如首页)是这个栏目,或者这个栏目的子栏目,那么就会使用
-
.active:这是一个自定义的 CSS 类名,您可以在网站的 CSS 文件中为这个类名添加样式,/* 在您的 CSS 文件中添加以下代码 */ .main-nav ul li.active a { color: #ff0000; /* 文字颜色变为红色 */ font-weight: bold; /* 字体加粗 */ }
-
-
保存并更新主页:同方法一的步骤 5。
使用自由列表(适用于复杂逻辑)
如果您的主栏目显示逻辑比较复杂(只显示有特定属性的栏目,或者按特定顺序排序),可以使用“自由列表”功能。
场景:需要根据栏目的“发布文章数”或其他属性来筛选和排序主栏目。
操作步骤:
-
登录后台。
-
创建自由列表:在左侧菜单栏中,找到
核心->自由列表。 -
配置自由列表:
-
列表名称:随便起一个,首页主栏目导航”。
-
按SQL语句查询:选择这个选项。
-
SQL语句:输入以下 SQL 语句,这个语句会从
dede_arctype表(栏目表)中查询所有顶级栏目,并按排序字段sortrank排序。SELECT id,typename,typedir,isdefault,defaultname,namerule2,moresite,siteurl,sitepath FROM `dede_arctype` WHERE reid=0 -- reid=0 表示顶级栏目 ORDER BY sortrank ASC -- 按后台设置的排序升序排列
-
模板:选择
使用公共模板,然后在下方的模板代码框中输入显示代码,与方法二类似:<ul> {dede:sql sql='SELECT id,typename,typedir FROM `dede_arctype` WHERE reid=0 ORDER BY sortrank ASC'} <li><a href='/[field:typedir/]/'>[field:typename/]</a></li> {/dede:sql} </ul>注意:这里的
[field:typedir/]返回的是相对路径,所以我们在前面加上了 来组成完整链接。
-
-
保存并生成:点击“下一步”或“保存”,然后生成这个自由列表。
-
在首页模板中调用:
-
打开您的首页模板
index.htm。 -
在需要显示栏目的位置,插入以下调用代码:
{dede:freelist listid='这里填写自由列表的ID'/} -
如何找到 ID?在自由列表管理页面,鼠标悬停在你创建的列表名称上,浏览器左下角会显示链接,
listid=后面的数字就是 ID。
-
-
更新主页:同方法一的步骤 5。
常见问题排查 (FAQ)
Q1: 为什么栏目显示不出来?
- 检查标签:确认标签
{dede:channel type='top'}中的type='top'是否写对了。 - 检查栏目属性:去后台的
栏目管理->添加栏目或修改栏目,检查一下该栏目是否为“最终栏目级”,如果不是顶级栏目,它就不会被type='top'调用。 - 检查生成:是否执行了“更新主页HTML”的操作?DedeCMS 的更改必须重新生成才能生效。
Q2: 为什么栏目链接是错的,打不开页面?
- 检查栏目目录:在后台修改栏目时,“栏目目录”是否设置正确?如果为空,它会自动根据栏目名称生成。
- 检查链接标签:确保使用的是
[field:typelink/],它包含了网站的基础路径,是最稳定的写法,避免直接使用[field:typedir/],因为它可能缺少网站根目录。
Q3: 我想显示栏目的图片(logo)怎么办?
- 在后台的
栏目管理->修改栏目中,可以上传“栏目图片”。 - 然后在模板标签中使用
[field:typedir/]或[field:typelink/]来调用,{dede:channel type='top' row='8'} <a href="[field:typelink/]"> <img src="[field:typedir/]/img/logo.png" alt="[field:typename/]"> [field:typename/] </a> {/dede:channel}注意:这里假设您把每个栏目的 logo 图片都放在了各自栏目目录下的
img/logo.png,您需要根据您的实际文件路径进行调整。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 内置标签 | 最简单、最直接、官方支持 | 样式控制能力弱 | 快速在首页顶部添加一个简单的文字链接导航。 |
| 自定义样式 | 灵活、强大、可实现高亮等效果 | 需要一点 HTML/CSS 基础 | 制作网站主导航菜单,需要精美样式和交互效果。 |
| 自由列表 | 逻辑最强大、可按任意条件筛选 | 配置稍复杂、需要了解基本 SQL | 需要根据特定条件(如文章数、点击量)来排序或筛选栏目。 |
对于绝大多数用户来说,方法一和方法二已经完全足够满足需求,从方法一开始尝试,如果需要更炫酷的效果,再升级到方法二。
