使用顶级栏目ID直接调用(最推荐、最直接)
这种方法最简单,性能最好,当你明确知道要调用的顶级栏目的ID时,直接使用GetTopTypename()函数即可。

(图片来源网络,侵删)
适用场景:
- 在首页、列表页、内容页等任何地方,只要你知道目标栏目的ID。
核心函数:
GetTopTypename($typeid)
$typeid: 你要调用的顶级栏目的ID。
代码示例:
假设你要调用的顶级栏目ID是 5,你可以在模板文件中直接使用以下代码:
{dede:field name='typeid' function="GetTopTypeme(@me)"/}
代码解析:
{dede:field name='typeid'}: 这是获取当前栏目ID的标签,在列表页或内容页,它会自动获取当前所在的栏目ID。function="GetTopTypeme(@me)": 这是一个函数调用。@me代表{dede:field name='typeid'}标签的值,也就是当前栏目的ID。GetTopTypeme()是DedeCMS的内置函数,它会接收一个栏目ID,然后找到这个ID对应的顶级栏目,并返回顶级栏目的名称。- 注意:有些版本的DedeCMS函数名是
GetTopTypename,有些是GetTopTypeme,请根据你自己的系统版本选择。GetTopTypeme不生效,就换GetTopTypename。
如果你想硬编码一个固定的顶级栏目ID,比如ID为1的栏目,可以这样写:

(图片来源网络,侵删)
{dede:gettopid function='GetTopTypeme(1)'/}
或者更直接地,直接调用函数(在某些模板引擎下可能需要这样):
<?php echo GetTopTypeme(1); ?>
但通常推荐使用第一种Dede标签的形式。
通过当前栏目的路径获取顶级栏目名称(最灵活)
如果你不知道顶级栏目的具体ID,但想根据当前页面的位置来获取其顶级栏目名称,这种方法非常灵活。
适用场景:
- 在当前栏目的列表页或内容页,想获取自己所属的顶级栏目名称。
核心函数/标签:
GetTopTypename()(同上){dede:field.typeid/}或{dede:field name='typeid'}(获取当前栏目ID)
代码示例:
在列表页模板 list_article.htm 或内容页模板 article_article.htm 中,你可以这样写:

(图片来源网络,侵删)
当前顶级栏目名称是:{dede:field.typeid function="GetTopTypeme(@me)"/}
代码解析:
{dede:field.typeid}: 获取当前栏目所在的栏目ID。function="GetTopTypeme(@me)": 将这个ID作为参数,传递给GetTopTypeme函数,从而得到顶级栏目的名称。
如果当前文章位于 顶级栏目ID=3 -> 二级栏目ID=10 -> 三级栏目ID=25,{dede:field.typeid} 的值就是 25,GetTopTypeme(25) 会返回 3 这个顶级栏目的名称。
使用SQL查询调用(功能最强大,但稍复杂)
当你需要更复杂的条件判断,或者想在首页等非栏目页面调用任意一个顶级栏目时,可以使用自定义SQL查询。
适用场景:
- 在首页调用指定顶级栏目。
- 需要根据栏目的其他属性(如栏目类型、关键词等)来筛选。
- 方法一和方法二无法满足需求时。
核心标签:
{dede:sql sql=''}...{/dede:sql}
代码示例:
假设你要调用顶级栏目ID为 5 的名称,并且你知道它在数据库中的表前缀是 dede_(默认)。
{dede:sql sql="SELECT typename FROM `dede_arctype` WHERE id=5 AND topid=0"}
[field:typename/]
{/dede:sql}
代码解析:
{dede:sql sql="..."}: 执行自定义SQL语句。SELECT typename FROM dede_arctype: 从dede_arctype表(栏目表)中选择typename(栏目名称)字段。WHERE id=5 AND topid=0: 这是查询条件。id=5: 指定要查询的栏目ID。topid=0: 这是关键,topid字段为0表示这是一个顶级栏目,加上这个条件可以确保你调用的是顶级栏目,即使ID为5的栏目被改成了二级栏目,也不会被错误调用。
[field:typename/]: 显示查询结果中的typename字段值。
总结与对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
GetTopTypeme() |
代码最简单,性能最好 | 必须知道顶级栏目的ID | 已知栏目ID,在任意位置调用,推荐首选。 |
| 路径获取 | 非常灵活,无需手动记ID | 只能在当前栏目或其子栏目页面使用 | 在列表页、内容页等获取当前栏目的顶级名称。 |
| SQL查询 | 功能最强大,可定制条件 | 代码稍复杂,需要了解数据库结构 | 在首页调用、需要复杂筛选条件、或作为备选方案。 |
在实际开发中,90% 的情况使用方法一和方法二就足够了。 GetTopTypeme() 这个函数,它能解决大部分调用顶级栏目名称的需求。
