- 后台直接修改:最简单,适合新手和快速修改。
- 修改模板文件:最灵活,可以自定义样式和内容。
- 修改核心函数:一劳永逸,但有一定风险,适合不常更换模板的用户。
下面我将详细介绍这三种方法。

在后台直接修改(推荐新手使用)
这是最直接的方法,你可以在后台的“频道模型”中为每个栏目自定义其当前位置的显示名称。
操作步骤:
- 登录DedeCMS后台。
- 进入【核心】 -> 【频道模型】 -> 【内容模型管理】。
- 点击你网站主要使用的内容模型,通常是“文章模型”,然后点击【字段管理】。
- 在字段列表中,找到名为
typename的字段,这就是“栏目名称”字段,点击后面的【管理】按钮。 - 在字段管理页面,你会看到一个“栏目自定义属性”的设置区域,你可以为每个栏目单独设置。
- 关键步骤:找到你想要修改的栏目,在“栏目自定义属性”中,找到 “上级栏目显示名称” 这个选项。
- 默认值:显示的是栏目的真实名称。
- 自定义:在这里输入你希望在该栏目下显示的名称。
- 不显示:如果想让这个栏目在面包屑中不显示,可以选择“不显示”。
优点:
- 无需修改文件,安全。
- 操作直观,适合非技术人员。
缺点:

- 每个栏目都需要单独设置,如果栏目很多会很麻烦。
- 无法实现完全自定义的样式(如加粗、改变颜色等)。
修改模板文件(最常用、最灵活)
这是最推荐的方法,通过修改模板文件,你可以完全控制面包屑的HTML结构、样式和内容。
操作步骤:
-
找到模板文件:
- 列表页模板:通常是
/templets/default/list_article.htm(根据你的模板和栏目类型可能不同)。 - 页模板:通常是
/templets/default/article_article.htm。 - 首页模板:通常是
/templets/default/index.htm。 - 通用模板:很多模板会把公共部分(包括面包屑)放在一个公共文件里,
/templets/default/head.htm或/templets/default/plus/fulllist.htm,你可以在这些文件中查找{dede:field name='position' /}或{dede:field name='title' function='str_replace("首页","",me)'/}这样的代码。
- 列表页模板:通常是
-
定位面包屑代码: 在你找到的模板文件中,搜索以下代码之一,它们都是用来调用当前位置的:
(图片来源网络,侵删){dede:field name='position' /}{dede:field name='title' /}(这个通常用在内容页,显示的是文章标题,但有时也会被用来构建面包屑){dede:global name='position'/}(旧版本或特定模板中可能使用)
-
修改或替换代码: 找到代码后,你可以直接修改它,或者用更灵活的标签组合来替换它。
示例1:简单的修改 如果你只是想把分隔符
>换成>>,可以直接修改标签:{dede:field name='position' runphp='yes'} $tcid = @me; $tcid = str_replace(' > ', ' >> ', $tcid); @me = $tcid; {/dede:field}或者更简单的方式,直接在HTML里写死(不推荐,因为不灵活):
<div class="position"> {dede:field name='position' function='str_replace(">"," >> ",me)'/} </div>示例2:完全自定义的面包屑(推荐) 这是更强大、更常用的方法,它让你能控制每个链接和文字的样式。
将原来的代码:
{dede:field name='position' /}替换为:
<div class="breadcrumb"> <a href='{dede:global.cfg_cmsurl/}/'>首页</a> {dede:field name='position' runphp='yes'} $tcid = @me; $tcid = str_replace(' > ', '/', $tcid); //先把 > 替换成 / $arr = explode('/', $tcid); //按 / 分割成数组 foreach($arr as $key => $value){ if($value){ $link = ''; for($i=1;$i<=$key;$i++){ $link .= $arr[$i-1].'/'; } $link = substr($link,0,-1); $link = "/plus/list.php?tid=".GetSonIds($link); if($key!=count($arr)-1){ @me .= ' <span class="separator">></span> <a href="'.$link.'">'.$value.'</a> '; }else{ @me .= ' <span class="separator">></span> <span class="current">'.$value.'</span> '; } } } {/dede:field} </div>代码解释:
<a href='{dede:global.cfg_cmsurl/}/'>首页</a>:首先输出一个“首页”的链接。runphp='yes':开启PHP运行功能。- 代码的核心逻辑是将
位置1 > 位置2 > 位置3这样的字符串分割成数组,然后循环遍历数组,为每个位置(除了最后一个)生成一个链接。 GetSonIds():这是一个DedeCMS内置函数,用于获取栏目的ID,用于构建list.php?tid=链接。separator和current:这些是自定义的CSS类名,方便你用CSS来控制分隔符和当前项的样式。
对应的CSS样式(可以加到你的CSS文件中):
.breadcrumb { font-size: 12px; color: #666; padding: 10px 0; } .breadcrumb a { color: #0066cc; text-decoration: none; } .breadcrumb a:hover { text-decoration: underline; } .breadcrumb .separator { color: #999; margin: 0 5px; } .breadcrumb .current { color: #333; font-weight: bold; /* 加粗当前项 */ }
优点:
- 灵活性极高,可以完全控制HTML结构和CSS样式。
- 一次修改,全站生效(如果使用了公共模板文件)。
缺点:
- 需要一定的HTML和CSS基础。
修改核心函数(慎用)
如果你想从根源上修改“当前位置”的生成逻辑,而不需要每次换模板都改代码,可以修改DedeCMS的核心函数。注意:修改核心文件后,升级DedeCMS时你的修改会被覆盖,请务必备份!
操作步骤:
-
找到核心文件: 这个函数通常位于
/include/helpers/extend.helper.php文件中,找到名为GetPositions()的函数。 -
修改函数: 打开这个文件,找到
function GetPositions($typeid, $string = '')函数,你可以直接修改这个函数内部的逻辑,比如修改$string的拼接方式、修改分隔符等。默认的函数里可能会有类似
$string = $row['typename'].$typedir.$string;这样的代码,你可以在这里加入你的自定义逻辑。 -
保存并测试。
优点:
- 一劳永逸,从根源上解决问题。
- 所有模板都会生效,无需修改模板文件。
缺点:
- 风险高:修改核心文件可能导致系统不稳定或出现未知错误。
- 升级困难:每次升级DedeCMS后,都需要重新修改这个文件。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 后台修改 | 简单、安全、无需技术 | 繁琐、不灵活 | 快速修改少量栏目的显示名称。 |
| 修改模板 | 灵活、强大、推荐 | 需要HTML/CSS基础 | 绝大多数情况下的首选方法,可以实现各种个性化需求。 |
| 修改核心 | 一劳永逸、全局生效 | 风险高、升级麻烦 | 不常升级、有技术能力、需要对全站所有模板生效的深度定制。 |
对于绝大多数用户来说,强烈推荐使用【方法二:修改模板文件】,它既安全又能满足绝大部分的个性化需求。
