"Position" 通常指的是我们在文章详情页或列表页看到的面包屑导航,首页 > 公司简介 > CEO致辞,修改它主要是为了优化网站的 SEO 结构和提升用户体验。

修改 "position" 主要涉及以下几个层面,我会从简单到复杂,逐步为您讲解:
修改面包屑导航的显示文字(最常用)
这是最常见的修改需求,比如把 "首页" 改成 "首页",把 "公司简介" 改成一个更友好的名字,如 "关于我们"。
修改首页名称
首页的名称通常由网站后台的全局变量控制。
- 操作路径:登录 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置
- 找到选项:主页链接名称
- 修改方法:在这里输入您希望在首页显示的文字,"网站首页" 或 "Home",然后点击 "保存修改"。
修改栏目名称
面包屑中的栏目名称直接对应于栏目的“栏目名称”。

- 操作路径:登录 DedeCMS 后台 -> 核心 -> 栏目管理
- 修改方法:
- 找到您想要修改的栏目,点击后面的 [修改] 按钮。
- 在栏目编辑页面,找到 栏目名称 这一栏,输入您想要的新名称。
- 点击 确定 保存即可。
注意:修改栏目名称后,所有该栏目下的文章列表页和内容页的面包屑都会自动更新。
修改面包屑导航的 HTML 结构和样式
如果您想改变面包屑的样式,比如去掉 > 符号,或者想给面包屑的每个部分加上链接,或者想用 <span> 包裹起来方便 CSS 控制,就需要修改模板文件。
找到模板文件
面包屑导航通常在文章内容页和列表页的模板中。
- 页模板:默认路径为
/templets/default/article_article.htm - 栏目列表页模板:默认路径为
/templets/default/list_栏目ID.htm(list_1.htm) - 首页模板:默认路径为
/templets/default/index.htm
定位面包屑代码
在这些模板文件中,找到生成面包屑的代码,它通常是这样的:

<div class="position">
<strong>当前位置:</strong>
{dede:field name='position'/}
</div>
这里的 {dede:field name='position'/} 就是核心的标签,它会自动生成类似 "首页 > 公司简介 > CEO致辞" 这样的路径。
修改标签以改变样式和结构
{dede:field name='position'/} 标签本身有一些属性可以调整。
示例1:去掉最后的文章标题
有时候我们不希望面包屑的最后一项是文章标题本身(因为标题太长且与 <h1> 标题重复),可以通过 notype 属性实现。
{dede:field name='position' notype='yes'/}
这会生成:首页 > 公司简介
示例2:自定义分隔符
默认分隔符是 >,你可以改成 >>、 或者其他任何符号。
{dede:field name='position' runphp='yes'}
@me = str_replace(' > ', ' / ', @me);
{/dede:field}
上面的代码会将 > 替换为 。
示例3:完全自定义 HTML 结构(高级用法)
runphp 还不能满足需求,可以使用更灵活的 {dede:field name='position'/} 的底层写法。
<div class="breadcrumb">
<a href='{dede:global.cfg_cmsurl/}/'>首页</a>
{dede:field name='position' runphp='yes'}
$tcstr = @me;
$tcstr = ereg_replace(' > ', ' <span class="separator">></span> ', $tcstr);
@me = $tcstr;
{/dede:field}
</div>
代码解析:
<a href='{dede:global.cfg_cmsurl/}/'>首页</a>:我们手动写出首页链接,方便单独控制样式。runphp='yes':开启 PHP 运行功能。ereg_replace(' > ', ' <span class="separator">></span> ', $tcstr);:这是核心代码,它把>替换成了一个带有span标签的版本。@me = $tcstr;:将处理后的结果赋值给@me,最终输出。
这样,您就可以在 CSS 中这样定义样式了:
.breadcrumb a {
color: #666;
text-decoration: none;
}
.breadcrumb a:hover {
color: #f00;
text-decoration: underline;
}
.breadcrumb .separator {
color: #ccc;
margin: 0 8px;
}
修改栏目类型以改变 "position" 的行为
在 DedeCMS 中,不同类型的栏目,其 "position" 的表现和链接可能不同。
- 外部链接:如果某个栏目被设置为“外部链接”,那么面包屑中该栏目的链接就会指向你设置的外部 URL,而不是本站的栏目列表页。
- 单页频道:如果栏目是“单页频道”,面包屑中的链接会指向该单页的内容页。
修改方法:
- 路径:核心 -> 栏目管理 -> 找到对应栏目 -> [修改]
- 在栏目设置中,找到 栏目类型,选择合适的类型即可。
修改数据库(终极方案,不推荐)
如果以上方法都无法满足需求,或者网站数据出现异常导致 position 显示错误,你可能需要直接修改数据库。此操作风险极高,请务必提前备份数据库!
position 的信息主要存储在 dede_archives (文章表) 和 dede_arctype (栏目表) 中。
修改文章的 position
在 dede_archives 表中,position 字段存储了文章的完整路径。
- 操作:登录你的数据库管理工具(如 phpMyAdmin),找到
dede_archives表。 - SQL 示例:如果你想修改 ID 为 10 的文章的 position,可以这样更新:
UPDATE dede_archives SET position = '1,2,5' WHERE id = 10;
这里的
1,2,5是栏目 ID 的组合,表示该文章属于一级栏目ID为1的二级栏目ID为2的三级栏目ID为5的栏目,这个路径必须和dede_arctype表中的topid字段结构一致。
修改栏目的 position
在 dede_arctype 表中,topid 和 reid 字段定义了栏目的层级关系,这共同构成了栏目的 position。
topid:顶级栏目ID,如果栏目本身就是顶级,则topid为0。reid:上级栏目ID。
修改这两个字段会改变栏目的层级,从而影响其下所有文章的 position,这个操作非常复杂,通常不建议直接操作。
总结与建议
| 修改需求 | 推荐方法 | 难度 | 风险 |
|---|---|---|---|
| 修改首页/栏目显示文字 | 后台系统参数/栏目管理 | 低 | 无 |
| 修改面包屑样式(如分隔符) | 修改模板文件 ({dede:field name='position'/}) |
中 | 低 |
| 去掉面包屑中的文章标题 | 使用 notype='yes' 属性 |
低 | 无 |
| 修改栏目链接行为 | 修改栏目类型(外部链接/单页) | 低 | 无 |
| 数据异常或特殊需求 | 直接修改数据库 | 高 | 极高 |
对于绝大多数用户来说,层面一和层面二已经足够解决 99% 的 "position" 修改问题,请优先尝试这些方法,只有在万不得已的情况下才考虑层面四。
