核心思路
在DedeCMS的文章页模板(通常是 article_article.htm)中,系统已经内置了当前文章的ID等信息,我们可以利用这个ID,通过DedeCMS提供的全局函数 GetOneType() 来获取其所属栏目的完整信息,然后再进行调用。

调用当前栏目的基本信息(最常用)
这种方法最直接,可以获取到栏目的名称、链接、简介等常用信息。
适用场景:在文章页面包屑导航上方或下方,显示“所属栏目:[栏目名称]”或“更多来自 [栏目名称] 的文章”等。
代码示例:
在您的 article_article.htm 模板文件中,在需要显示的位置加入以下代码:

{dede:field name='typeid' function="GetOneType(@me,0)/"}
代码解析:
{dede:field name='typeid'}: 这是获取当前文章所属的栏目ID。function="GetOneType(@me,0)": 这是核心。@me:代表typeid这个字段的值,也就是栏目ID。GetOneType():这是DedeCMS的一个核心PHP函数,用于根据栏目ID获取该栏目的详细信息。0:表示获取当前栏目,而不是其上级栏目,虽然这里写0和不写效果一样,但明确写上可以增强代码可读性。
如何调用具体信息?
使用上面的代码后,DedeCMS会返回一个包含所有栏目信息的数组,你需要在模板中通过 字段名 来调用具体内容。
示例1:调用栏目名称和链接

<!-- 方式一:直接调用,代码简洁 -->
<p>本文来自:<a href="{dede:field name='typeid' function="GetOneType(@me,0)/['typedir']"}">{dede:field name='typeid' function="GetOneType(@me,0)/['typename']"}</a></p>
<!-- 方式二:使用 {dede:tagname} 标签,代码更清晰,推荐 -->
{dede:field name='typeid' function="GetOneType(@me,0)/"}
<p>本文来自:<a href="[field:typedir/]">[field:typename/]</a></p>
{/dede:field}
示例2:调用栏目简介
{dede:field name='typeid' function="GetOneType(@me,0)/"}
<p>栏目简介:[field:description/]</p>
{/dede:field}
常用栏目调用字段列表:
| 字段名 | 说明 | 示例 |
|---|---|---|
typename |
栏目名称 | [field:typename/] |
typedir |
栏目链接地址 | [field:typedir/] |
description |
栏目简介 | [field:description/] |
seotitle |
栏目SEO标题 | [field:seotitle/] |
keywords |
栏目关键词 | [field:keywords/] |
调用顶级栏目的信息(频道页)
你可能想在文章页显示这篇文章所属的“顶级栏目”(也就是频道页)的信息,而不是它直接所在的栏目。
适用场景:网站有明确的频道划分(如新闻中心、产品中心、下载中心等),希望在文章页显示“[频道名称] > [栏目名称] > [文章标题]”这样的层级关系。
代码示例:
{dede:field name='typeid' function="GetOneType(@me,1)/"}
代码解析:
- 与方法一的唯一区别是函数的第二个参数,这里我们写的是
1。 GetOneType(@me,1):这个1表示获取当前栏目的“顶级父栏目”信息。
如何使用:
{dede:field name='typeid' function="GetOneType(@me,1)/"}
<p>所属频道:<a href="[field:typedir/]">[field:typename/]</a></p>
{/dede:field}
结合面包屑导航(综合应用)
这是最实用的场景,通常我们会在面包屑导航中显示从顶级栏目到当前栏目的完整路径。
DedeCMS的面包屑标签 {dede:field name='position' /} 默认已经实现了这个功能,它会自动显示 “首页 > 顶级栏目 > 二级栏目 > ... > 当前栏目”。
示例代码:
<div class="breadcrumb">
<span>您的位置:</span>
{dede:field name='position' /}
</div>
输出效果示例:
<div class="breadcrumb">
<span>您的位置:</span>
<a href='http://www.yoursite.com/'>主页</a> >
<a href='http://www.yoursite.com/news/'>新闻中心</a> >
<a href='http://www.yoursite.com/news/gundong/'>国内新闻</a> > </div>
如果你想在面包屑之外,单独再强调一下当前栏目,可以结合方法一使用:
<div class="breadcrumb">
<span>您的位置:</span>
{dede:field name='position' /}
</div>
<hr>
{dede:field name='typeid' function="GetOneType(@me,0)/"}
<h3>更多来自 <a href="[field:typedir/]">[field:typename/]</a> 的文章</h3>
{/dede:field}
总结与注意事项
-
推荐使用
{dede:field}:虽然直接在function里写['typename']也能用,但使用{dede:field}...{/dede:field}包裹的方式,代码结构更清晰,更符合DedeCMS模板的规范,也更容易维护。 -
缓存问题:修改模板文件后,请务必登录DedeCMS后台,点击“生成” -> “更新HTML”,重新生成文章页面,否则看不到效果。
-
字段不存在:如果调用某个字段(如
[field:seotitle/])后没有内容,说明你在后台添加该栏目时没有填写这个信息,这是正常的。 -
栏目类型:这些方法同样适用于普通栏目、封面栏目和外部链接栏目,对于外部链接栏目,
[field:typedir/]会调用你在后台设置的外部链接地址。
选择最适合您网站布局和需求的方法即可,对于绝大多数情况,方法一和方法三的结合使用已经足够强大和灵活。
