最简单直接的方法(推荐)
这种方法最简单,只需要修改一个模板文件,并且不会影响 URL 的美观性。

(图片来源网络,侵删)
适用场景:你希望在文章的标题(<h1> 标签)前直接显示栏目名称。
操作步骤:
-
登录后台:用管理员账号登录你的 DedeCMS 后台。
-
找到模板文件:
(图片来源网络,侵删)- 在后台左侧菜单,找到 【模板】 -> 【默认模板管理】。
- 在列表中找到你正在使用的文章内容页模板,通常是
article_article.htm,点击后面的 【修改】 按钮。
-
代码:
- 在模板代码中,找到显示文章标题的
<h1>标签,它通常看起来像这样:<h1>{dede:field.title/}</h1> - 将其修改为:
<h1>{dede:field.typename/} - {dede:field.title/}</h1> - 代码解释:
{dede:field.typename/}:这个标签的作用是获取当前文章所属的栏目名称。- 这是连接符,你可以换成你喜欢的任何符号,、
>或者直接留空。 是最常见的选择。
- 在模板代码中,找到显示文章标题的
-
保存并更新:
- 点击模板编辑器右上角的 【保存】 按钮。
- 重要:修改模板后,之前已经生成的文章页面不会自动更新,你需要去更新这些文章,新修改才能生效。
- 在后台左侧菜单,进入 【生成】 -> 【HTML更新】。
- 你可以选择 【选择栏目】 更新特定栏目下的所有文章,或者 【开始执行】 更新整个网站,为了看到效果,建议更新一下你刚刚修改的文章所在的栏目。
效果:
修改后,文章页面的标题会显示为:
栏目名称 - 文章标题
更灵活的方法(使用自定义函数)
如果你想在页面的不同位置(比如面包屑导航、文章标题旁、页眉等)都显示栏目名称,并且希望有更灵活的控制,可以使用自定义函数。

(图片来源网络,侵删)
适用场景:需要在多个地方重复使用栏目名称,或者需要对栏目名称进行特殊处理(如截取、添加样式等)。
操作步骤:
-
创建自定义函数文件:
- 使用 FTP 或你的主机文件管理器,进入
/include/extend.func.php文件。 - 如果这个文件不存在,请手动创建一个。
- 在这个文件中添加以下 PHP 函数代码:
// 获取当前栏目名称 if (!function_exists('getTypename')) { function getTypename() { global $dsql; $typeid = GetTypeId(); // 获取当前文章的栏目ID if (empty($typeid)) return ''; $query = " typename FROM `dede_arctype` WHERE id = $typeid "; $row = $dsql->GetOne($query); return $row['typename']; } }注意:如果你的
dede_arctype表有表前缀(如dede_),请确保代码中的表名一致,上面的代码假设没有前缀。
- 使用 FTP 或你的主机文件管理器,进入
-
在模板中调用函数:
- 打开
article_article.htm模板文件。 - 在你需要显示栏目名称的地方,使用以下标签:
{dede:global.name function='getTypename()'/} - 在
<h1>标签中使用:<h1>{dede:global.name function='getTypename()'/} - {dede:field.title/}</h1> - 这个方法和方法一的效果是一样的,但这种方式更灵活,你可以在模板的任何地方调用
getTypename()函数。
- 打开
-
保存并更新:
- 保存模板文件,然后去后台 【生成】 -> 【HTML更新】 相应的栏目。
修改数据库(不推荐,仅作了解)
这种方法非常直接,它会永久性地修改你所有文章的标题。极不推荐,因为它破坏了数据的原始性和可维护性,并且会影响到后台的搜索和管理。
操作步骤:
- 备份数据库:在进行任何数据库操作前,务必备份数据库!
- 登录 phpMyAdmin:通过你的主机控制面板进入 phpMyAdmin。
- 选择数据库:选择你的 DedeCMS 数据库。
- 执行 SQL 语句:
- 在 SQL 标签页中,输入以下代码(请将
dede_替换为你数据库的真实表前缀):UPDATE dede_archives SET title = CONCAT((SELECT typename FROM dede_arctype WHERE id = dede_archives.typeid), ' - ', title);
- 代码解释:
UPDATE dede_archives:要修改的表是文章表。SET title = ...:要修改的字段是标题。CONCAT(...):一个字符串拼接函数。(SELECT typename FROM ...):这是一个子查询,它会根据dede_archives表中的typeid字段,去dede_arctype表中找到对应的typename。- 连接符。
title:原始的标题。
- 在 SQL 标签页中,输入以下代码(请将
- 执行:点击 【执行】 按钮。
警告:
- 这个操作是不可逆的(除非你从备份恢复)。
- 它会直接修改数据库,导致后台的文章列表里标题也带上了前缀,可能会让你感到困惑。
- 如果你后续更换模板或想取消这个效果,会非常麻烦。
请优先选择方法一或方法二。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 方法一 | 简单、直接、无侵入性,不影响后台数据 | 灵活性稍差,只能在模板中直接使用 | ★★★★★ (强烈推荐) |
| 方法二 | 非常灵活,可在多处调用,便于扩展 | 需要创建函数文件,对新手稍有门槛 | ★★★★☆ (推荐给有一定基础的用户) |
| 方法三 | 一劳永逸,修改所有数据 | 破坏数据结构,影响后台,难以恢复,不推荐 | ☆☆☆☆☆ (强烈不推荐) |
对于绝大多数用户来说,方法一 是最佳选择,它简单、安全,且完全能满足在文章标题前显示栏目名称的需求。
