核心原理
DedeCMS的模板系统通过 {dede:field} 和 {dede:arclist} 等标签来获取和显示数据,要获取当前栏目的信息,最关键的是要确保标签所在的上下文环境是正确的,也就是说,这个标签必须在一个栏目页模板(如 list_article.htm)或者一个由栏目页动态生成的页面上。

在栏目页模板中直接调用(最常用)
这是最直接、最常见的需求,比如你想在栏目页的标题位置显示“产品分类 - 二级栏目名称”这样的格式。
适用场景: 在 list_article.htm(或你自定义的栏目页模板)中。
核心标签: {dede:field name='typename' /}
这个标签会直接获取当前所在栏目的名称。

示例:
假设你的网站首页标题是 "我的网站",你想让所有二级栏目页的标题都变成 "我的网站 - [二级栏目名称]"。
- 打开你的栏目页模板文件,通常是
/templets/default/list_article.htm。 - 找到
<title>- 修改它,使用
concat函数来拼接字符串。 - 修改它,使用
代码解释:
{dede:global.cfg_webname/}:调用网站后台设置的“网站名称”。- 一个连接符,你可以换成 或者其他你喜欢的符号。
{dede:field name='typename' /}:核心,调用当前栏目的名称。
这样,当用户访问“新闻中心 -> 公司新闻”这个栏目页时,页面的标题就会自动显示为“我的网站 - 公司新闻”。

在文章页模板中调用当前栏目名称
你希望在文章详情页(如 article_article.htm)的面包屑导航或者某个位置显示这篇文章所属的二级栏目名称。
适用场景: 在 article_article.htm(文章详情页模板)中。
核心标签: {dede:field name='typename' /}
好消息是,标签和方法一完全一样! 因为当你打开一篇文章时,DedeCMS的上下文环境已经自动定位到了这篇文章所属的栏目,{dede:field name='typeid'} 和 {dede:field name='typename'} 都会指向这个文章所属的栏目。
示例:
在文章详情页面包屑导航中显示栏目名称。
<div class="breadcrumb">
<a href="{dede:global.cfg_basehost/}">首页</a> >
<!-- 下面这句会调用当前文章所在的一级栏目 -->
<a href="{dede:type typeid='[field:id/]'}"><a href="[field:typelink/]">[field:typename/]</a></a> >
<!-- 下面这句会调用当前文章所在的二级栏目(也就是当前栏目) -->
<span>{dede:field name='typename' /}</span> >
<span>{dede:field name='title' /}</span>
</div>
注意:上面的面包屑示例中,{dede:type} 标签是用来获取上级栏目信息的,而 {dede:field name='typename'} 在文章页中,直接获取的就是当前文章所在栏目的名称。
通过 typeid 属性指定栏目名称(适用于首页、首页等)
如果你想在首页或者其他非栏目页的模板上,调用一个指定ID的二级栏目的名称,你需要使用 typeid 属性。
适用场景: 在首页(index.htm)上展示某个特定栏目的名称。
核心标签: {dede:field name='typename' typeid='栏目ID' /}
示例:
假设你有一个二级栏目“产品展示”,它的栏目ID是 5,你想在首页显示“产品展示”这个名称。
- 首先在后台“栏目管理”中找到“产品展示”这个栏目,记下它的ID(假设是
5)。 - 打开首页模板
index.htm。 - 在你想要显示名称的地方,插入以下代码:
<h2>我们的产品:</h2>
<p>当前栏目是:<strong>{dede:field name='typename' typeid='5' /}</strong></p>
代码解释:
typeid='5':这个属性告诉DedeCMS,不要获取“当前”栏目,而是去获取ID为5的那个栏目的信息,这样就能在任何地方调用任何指定栏目的名称了。
总结与注意事项
| 场景 | 推荐标签 | 说明 |
|---|---|---|
| 栏目页 | {dede:field name='typename' /} |
最常用,直接获取当前栏目的名称。 |
| 文章页 | {dede:field name='typename' /} |
同样适用,获取文章所属栏目的名称。 |
| 首页/其他页 | {dede:field name='typename' typeid='栏目ID' /} |
需要指定 typeid 才能调用特定栏目的名称。 |
重要提示:
- 模板缓存: 修改模板文件后,如果前台页面没有立即生效,请登录DedeCMS后台,点击 “系统” -> “一键更新缓存” 或 “生成” -> “更新HTML” 来刷新缓存。
- 栏目类型: 确保你调用的确实是一个“栏目”,而不是一个“独立页面”,独立页面没有下级文章列表,其模板和行为与普通栏目不同。
- 模板文件名: 确保你修改的是正确的模板文件,DedeCMS允许为不同栏目指定不同的模板,请检查栏目的“高级选项”中的“列表模板”是否为你修改的文件。
希望这个详细的解答能帮助你解决问题!
