点击顶级栏目,跳转到该栏目下的文章列表页(最常见)
这是织梦CMS的默认行为,也是绝大多数网站的需求,你不需要做任何特殊的设置。

工作原理:
- 在织梦后台,你创建一个顶级栏目(公司新闻”)。
- 这个栏目被分配了一个固定的ID(
arctypeid=3)。 - 织梦会自动为这个栏目生成一个对应的列表页模板,通常是
list_arctypeid_3.html(list_3.html)。 - 在你的首页或其他页面上,当你调用顶级栏目的链接时,织梦会自动生成指向这个列表页的URL。
如何实现(前端代码):
在模板文件(如 index.htm)中,使用织梦的标签 {dede:channel} 来调用栏目。
示例代码:
{dede:channel type='top' row='8'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
代码解释:

{dede:channel type='top' row='8'}: 这是一个循环标签,用于调用栏目。type='top': 关键参数,表示只调用顶级栏目。row='8': 表示调用8个顶级栏目。
[field:typelink/]: 这是字段标签,输出栏目的链接地址,它自动指向list_x.html。[field:typename/]: 输出栏目的名称。
如果你只想让点击顶级栏目后,看到该栏目下的所有文章列表,直接使用上述代码即可,这是织梦的默认功能。
点击顶级栏目,跳转到该栏目下的一个指定文章(栏目首页”或“关于我们”)
顶级栏目本身不想显示文章列表,而是想让它像一个独立的页面,比如跳转到“关于我们”页面。
实现方法:
-
在后台创建一个单页文档:
(图片来源网络,侵删)- 登录织梦后台 -> 内容 -> 单页文档管理 -> 增加。
- ,关于我们”。
- ”编辑器中填写你的页面内容。
- 提交后,记下这篇文章的ID(
aid=10)。
-
修改顶级栏目的“栏目内容”:
- 进入“核心” -> “栏目管理”,找到你想要修改的顶级栏目(公司介绍”)。
- 点击进入编辑。
- 在“栏目内容”这一项,不要填写任何内容。
- 关键步骤: 在这个页面下方,找到并勾选 “使用栏目页模板”,这一步很重要,它确保了即使没有“栏目内容”,也不会显示默认的文章列表。
-
修改顶级栏目的“外部链接”:
- 在同一个栏目编辑页面,找到“高级选项” -> “选项”。
- 勾选 “链接到外部网址”。
- 在下方的输入框中,填入你之前创建的单页文档的链接,链接格式是:
/plus/view.php?aid=10。 - (可选但推荐) 你也可以直接填写该文章的静态URL(如果你开启了伪静态,
/aboutus.html)。
-
保存修改。
效果: 当你在前台点击“公司介绍”这个顶级栏目时,它就不会跳转到文章列表页了,而是会直接跳转到你设置的“关于我们”单页内容。
点击顶级栏目,跳转到该栏目下的子栏目列表页
这种需求也很常见,比如一个“产品中心”顶级栏目,点击后直接展示所有“产品分类”子栏目,而不是产品文章。
实现方法: 这需要用到织梦的自定义模型和栏目列表模板。
-
创建一个“栏目导航”模型(可选但推荐):
- 后台 -> 核心 -> 频道模型 -> 内容模型管理 -> 增加。
- 模型名称:
栏目导航。 - 模型表前缀:
#@_addonarticle(或任意不重复的前缀)。 - 这个模型可以让你为每个子栏目添加一个简介、图片等,让导航页更丰富。
-
创建顶级栏目,并绑定模型:
- 进入“栏目管理”,创建一个顶级栏目,产品中心”。
- 在“高级选项” -> “内容模型”中,选择你刚刚创建的“栏目导航”模型(或者直接使用默认的“普通文章”也可以)。
-
创建子栏目:
- 在“产品中心”下创建子栏目,产品分类A”、“产品分类B”。
- 重要: 这些子栏目必须是“栏目首页”,并且它们下面可以继续放文章。
-
设置顶级栏目的“栏目列表选项”:
- 编辑“产品中心”这个顶级栏目。
- 找到“栏目列表选项”。
- 勾选 “使用列表页模板”。
- 在下面的“列表内容模板”中,选择一个适合显示子栏目的模板,织梦默认可能没有,你可能需要自己创建一个,
list_productnav.htm。
-
创建自定义列表模板
list_productnav.htm:- 在你的模板目录(如
/templets/default/)下新建一个文件list_productnav.htm。 - 在这个文件里,编写代码来调用当前栏目的所有子栏目。
list_productnav.htm文件内容示例:<h2>产品分类</h2> <ul> {dede:channel type='son' noself='yes'} <li> <a href="[field:typelink/]"> [field:typename/] </a> </li> {/dede:channel} </ul>{dede:channel type='son' noself='yes'}: 这个标签专门用于调用当前栏目的子栏目。type='son': 表示调用子栏目。noself='yes': 表示不调用栏目本身。
- 在你的模板目录(如
-
保存并更新:
- 保存所有修改。
- 去“生成” -> “更新栏目HTML”,更新“产品中心”栏目的HTML。
效果:
现在点击“产品中心”顶级栏目,就会显示你自定义的 list_productnav.htm 页面,该页面会列出所有“产品分类A”、“产品分类B”等子栏目。
完全自定义顶级栏目的点击行为(例如执行JS、跳转外部链接等)
如果上述方法都无法满足你的需求,你可能需要在HTML层面进行更直接的控制。
实现方法:
-
在后台获取目标URL:
在后台确定好这个顶级栏目点击后应该跳转到的具体地址(无论是文章列表、单页、外部网址还是JS函数)。
-
手动编写HTML链接:
- 放弃使用
{dede:channel}标签,直接在模板文件中手写<a>
示例1:跳转到外部链接
<!-- "联系我们"栏目直接跳转到百度 --> <a href="https://www.baidu.com" target="_blank">联系我们</a>
示例2:执行JavaScript函数
<!-- 点击"在线客服"栏目时,执行一个显示客服窗口的JS函数 --> <a href="javascript:;" onclick="showCustomerService();">在线客服</a> <script> function showCustomerService() { // 这里写你的JS代码,比如弹出一个div alert('客服功能开发中...'); // 或者打开一个新窗口 // window.open('/service.html', '_blank'); } </script> - 放弃使用
缺点: 这种方法会失去织梦CMS的动态管理优势,如果你在后台修改了栏目的名称,你必须手动去模板文件里修改HTML代码,否则前端不会更新。
总结与建议
| 你的需求 | 推荐的实现方法 | 优点 | 缺点 |
|---|---|---|---|
| 点击进入文章列表 | 使用 {dede:channel type='top'} |
织梦默认功能,最简单、最标准 | 功能固定 |
| 点击进入一个指定页面 | 使用“外部链接”功能 | 管理方便,在后台即可配置 | 需要额外创建一个单页文档 |
| 点击进入子栏目列表 | 使用自定义列表模板 | 灵活,可以设计出丰富的导航页 | 需要创建模板文件,略复杂 |
| 执行特殊操作(JS等) | 手动编写 <a> |
完全自由,不受CMS限制 | 失去动态更新能力,维护麻烦 |
对于绝大多数网站,场景一和场景二已经足够解决“点击顶级栏目”的问题,请根据你的具体业务逻辑,选择最合适的方案。
