基础用法:直接调用当前位置
在织梦的列表页模板文件(通常是 /templets/default/list_article.htm)中,你只需要在想要显示面包屑导航的地方,插入以下标签即可:

{dede:field name='position'/}
示例效果:
如果你的栏目结构是 首页 > 科技 > 互联网 > 前端开发,而你正在访问“前端开发”这个栏目的列表页,{dede:field name='position'/} 会输出:
首页 > 科技 > 互联网 > 前端开发
自定义美化:修改分隔符和样式
默认的 > 分隔符可能不符合你的网站设计风格,我们可以通过修改织梦的核心文件来实现自定义,或者使用更灵活的CSS方法。
修改核心文件(永久性修改)
这种方法会改变你整个网站所有 {dede:field name='position'/} 的显示效果。
-
找到核心文件 打开织梦的安装目录,找到文件:
/include/helpers/extend.helper.php
(图片来源网络,侵删) -
找到并修改函数 在这个文件中,搜索
GetPosition()函数,你会找到类似下面的代码:if(!function_exists('GetPosition')) { function GetPosition($nvar, $split = ' > ') { // ... 函数内部代码 ... return $restring; } } -
修改参数 你可以看到,这个函数的第二个参数
$split的默认值就是' > ',你可以直接在这里修改它。- 修改为斜杠 :将
$split = ' > '改为$split = ' / '。 - 修改为竖线 :将
$split = ' > '改为$split = ' | '。 - 修改为 :将
$split = ' > '改为$split = ' » '。
修改后,保存文件并覆盖到服务器上,织梦的缓存机制可能会让你看不到即时效果,可以清空一下缓存再刷新页面。
- 修改为斜杠 :将
使用CSS进行美化(推荐,更灵活)
这种方法不修改核心代码,只通过CSS来控制样式,更安全且灵活。

-
在模板中添加包裹标签 在你的列表页模板中,给
{dede:field name='position'/}加一个div或其他HTML标签,并赋予一个class,方便我们用CSS来控制。<div class="breadcrumb"> {dede:field name='position'/} </div> -
编写CSS样式 在你的CSS文件(
/templets/default/style.css)中,添加以下样式来美化这个面包屑导航。/* 面包屑导航容器样式 */ .breadcrumb { font-size: 12px; /* 调整字体大小 */ color: #666; /* 调整文字颜色 */ padding: 10px 0; /* 上下内边距 */ margin-bottom: 15px; /* 下外边距,与下方内容隔开 */ } /* 面包屑导航中的链接样式 */ .breadcrumb a { color: #333; /* 链接默认颜色 */ text-decoration: none; /* 去掉下划线 */ } /* 链接的悬停效果 */ .breadcrumb a:hover { color: #0066cc; /* 鼠标悬停时的颜色 */ text-decoration: underline; /* 悬停时显示下划线 */ } /* 使用CSS ::after 伪元素来动态添加分隔符,这是现代且推荐的做法 */ .breadcrumb a:not(:last-child)::after { content: "/"; /* 这里可以改成任何你想要的分隔符,如 > | » */ color: #999; /* 分隔符的颜色 */ padding: 0 8px; /* 分隔符左右的间距 */ }使用CSS伪元素的好处:
- 无需修改核心文件:安全,升级织梦时不会丢失修改。
- 代码更简洁:HTML部分只需要一个标签,CSS自动处理最后一个链接后面的分隔符问题。
- 易于维护:所有样式都集中在CSS文件中。
常见问题与解决方案
问题1:首页不想显示链接,只想显示“首页”文字
默认情况下,{dede:field name='position'/} 会把“首页”也变成一个链接,如果你只想让它显示为文字,可以使用 {dede:field name='position' function='str_replace("首页","首页",me)'/} 这种方法,但更推荐使用织梦的另一个标签组合。
推荐方案:使用 {dede:global name='cfg_cmspath'/} 和 {dede:field name='title'/} 组合
<a href="{dede:global name='cfg_cmspath'/}">首页</a>{dede:field name='position' function='str_replace("首页","",me)'/}
工作原理:
{dede:global name='cfg_cmspath'/}:获取你网站首页的URL地址。<a href="...">首页</a>:手动创建一个指向首页的链接。{dede:field name='position' function='str_replace("首页","",me)'/}:调用当前位置,但使用str_replace函数把字符串中的“首页”替换为空,从而去掉它。
这样就能实现“首页”是链接,而后续的栏目名中不再重复出现“首页”链接的效果。
问题2:当前位置为空,或者显示不正确
请检查以下几点:
- 栏目是否正确设置:确保你正在访问的栏目在后台“栏目管理”中已经正确设置,并且属于正确的父栏目。
- 模板文件是否正确:确认你修改的是正确的列表页模板文件(
list_xxx.htm,xxx是栏目ID)。 - 是否有自定义字段冲突:检查你的自定义字段中是否有一个名为
position的字段,这可能会与系统内置的position字段冲突。 - 清空缓存:登录织梦后台,点击“系统” -> “一键更新站点” -> “更新缓存”,然后刷新前台页面。
| 需求 | 推荐方案 | 代码示例 |
|---|---|---|
| 基础调用 | 使用默认标签 | {dede:field name='position'/} |
| 修改分隔符 | 推荐使用CSS伪元素 | HTML: <div class="breadcrumb">{dede:field name='position'/}</div> CSS: .breadcrumb a:not(:last-child)::after { content: "/"; } |
| 首页文字化 | 组合使用全局变量和函数 | <a href="{dede:global name='cfg_cmspath'/}">首页</a>{dede:field name='position' function='str_replace("首页","",me)'/} |
对于大多数网站,“方法二:使用CSS进行美化” 结合 “常见问题1:首页文字化” 的方案,是最佳实践,因为它既灵活又安全。
