核心原理
在DedeCMS中,列表页的地址是由 栏目 的属性决定的,每个栏目都有一个“列表选项”设置,这决定了列表页的生成规则:

- 栏目列表 (默认):列表页会生成一个静态文件,如
/plus/list-1-1.html。 - 外部链接:栏目直接指向一个外部URL,如
https://www.example.com。 - 频道封面:栏目不生成列表页,其列表页就是封面页本身(即首页或栏目封面页)。
获取列表页地址的关键在于,先获取当前栏目的信息,然后根据其“列表选项”来生成或获取正确的URL。
使用 {dede:field name='typeurl' /} (最推荐、最简单)
这是DedeCMS内置的、最标准也是最简单的方法,专门用于获取当前栏目的列表页地址。
适用场景:
- 在栏目封面模板(如
index.htm)中,获取当前栏目的列表页地址。 - 在列表页模板(如
list_article.htm)中,获取当前栏目的列表页地址(它自己)。 - 在文章页模板(如
article_article.htm)中,获取文章所属栏目的列表页地址。
使用示例:
在栏目封面模板中调用
假设你的栏目封面模板是 templets/default/default/index.htm,你想在某个地方添加一个“查看更多”或“进入列表”的链接。

<div class="channel-more">
<a href="{dede:field name='typeurl' /}">查看更多</a>
</div>
这里的 {dede:field name='typeurl' /} 会自动解析为当前栏目的列表页URL,如果当前栏目是“公司新闻”(ID为3),那么它会输出 /plus/list-3-1.html。
页调用
在文章页模板(如 article_article.htm)中,如果你想添加一个“返回列表”的链接:
<div class="back-to-list">
<a href="{dede:field name='typeurl' /}">返回栏目列表</a>
</div>
这里的 {dede:field name='typeurl' /} 会获取这篇文章所属栏目的列表页地址。

使用 {dede:global name='itemurl' /} (仅适用于封面页)
这个全局变量仅在封面页模板(即 index.htm)中有效,它直接指向当前栏目的列表页地址。
适用场景:
- 仅限于栏目封面模板。
使用示例:
在 index.htm 中:
<a href="{dede:global name='itemurl' /}">进入本栏目列表</a>
注意:这个标签在列表页或内容页中是无效的,会输出空值。优先使用方法一 {dede:field name='typeurl' /},因为它更通用。
使用 {dede:field name='typeid' /} 手动拼接URL(灵活但麻烦)
当你需要更灵活的控制,或者在某些特殊情况下无法使用 typeurl 时,可以手动拼接URL。
适用场景:
- 需要对URL进行特殊处理。
- 在一些非标准的循环标签内(如
{dede:arclist})获取外层栏目的URL。
使用示例:
在栏目封面模板中:
<a href="/plus/list-{dede:field name='typeid' /}-1.html">手动拼接的链接</a>
解析:
{dede:field name='typeid' /}:获取当前栏目的ID。/plus/list-:DedeCMS列表页的固定前缀。-1.html:-1表示页码为第一页,通常可以省略,因为访问/plus/list-1.html会自动跳转到/plus/list-1-1.html,但写上更规范。
重要提示:这种方法有一个致命缺陷,如果当前栏目的“列表选项”被设置成了“外部链接”或“频道封面”,那么手动拼接出来的 /plus/list-x-1.html 这个URL是不存在的!用户点击后会得到404错误。
除非你非常确定所有栏目的列表选项都是“栏目列表”,否则不推荐使用这种方法。
特殊情况处理:顶级栏目与子栏目
如果你的网站有复杂的栏目层级(如“产品”是顶级栏目,“手机”和“电脑”是它的子栏目),并且希望点击顶级栏目时能进入其列表页(包含所有子栏目的文章),你需要确保顶级栏目的“列表选项”设置为“栏目列表”。
- 顶级栏目的列表页:
/plus/list-1-1.html(假设“产品”栏目ID为1) - 子栏目的列表页:
/plus/list-2-1.html(假设“手机”栏目ID为2)
在顶级栏目封面模板 index.htm 中,使用 {dede:field name='typeurl' /} 会正确地指向 /plus/list-1-1.html。
总结与最佳实践
| 方法 | 适用场景 | 优点 | 缺点 | |
|---|---|---|---|---|
| 最推荐 | {dede:field name='typeurl' /} |
所有需要获取栏目列表页的地方(封面、列表、文章页) | 官方标准、自动适配、最安全 | 无明显缺点 |
| 仅限封面 | {dede:global name='itemurl' /} |
仅在栏目封面模板 index.htm 中 |
简单直接 | 通用性差,在非封面页无效 |
| 灵活但危险 | 手动拼接 | 特殊需求,需自行处理URL | 灵活可控 | 不安全,无法处理“外部链接”等特殊情况,容易产生404 |
最终建议:
在任何需要获取DedeCMS栏目列表页地址的地方,都请优先使用
{dede:field name='typeurl' /}。 这是最符合DedeCMS设计逻辑、最安全、最可靠的方法。
