非常感谢 @manuel – 我已使用您的代码更新了此组件(并添加了一些代码片段),以启用一些其他功能:
- 嵌套类别现在可在面包屑中支持
- 除主题页面外,完整的面包屑现在将显示在所有类别和嵌套类别列表页面上
- 现在有一个设置可以在移动设备上启用或禁用此功能
非常感谢 @manuel – 我已使用您的代码更新了此组件(并添加了一些代码片段),以启用一些其他功能:
你好!这个组件很棒!
只有一个小细节,也许你知道如何修复。
返回按钮在向下滚动时会消失(请看附带的视频)……是否可以将返回按钮固定/浮动在屏幕顶部,以便在滚动时保持可见?
背景:该社区被嵌入(webview)到我们的移动应用程序中。
感谢 @cristo 提出的绝佳建议,该建议现已包含在设置中:
是的,因为这是一个“主页”按钮,而不是“返回”按钮!
抱歉!因为有那个箭头,我还以为是返回按钮。
@denvergeeks 感谢您的澄清!您是否知道有哪个组件提供返回按钮?
我不知道是否有任何现有的 TC 包含(或包含)一个真正的“返回”按钮。可能确实存在包含该按钮的内容。
但我认识到在网站导航中添加“返回”按钮的实用性,因此我将另外创建一个提供该功能的 TC。
也许您可以查找是否有什么现有的主题或主题组件碰巧包含该按钮。找到它可能会加快我的进程。
太棒了!我会研究一下然后告诉你我的发现。
谢谢!
@denvergeeks 我找到了一个可能对您有用的主题:
我还没有找到任何包含后退按钮的现有主题或组件。
不幸的是,我在 iPhone 16 Pro Max 上遇到了同样的问题。
是的,我可以确认它是在更新后出现的。我的安卓手机也出现了这个问题。
感谢 @Aaron_Walsh 和 @cristo 的报告!请立即更新并告知您的结果!
我确认了 Android 端的问题。现已修复并移除。
已在我的 iPhone 上修复!
@denvergeeks 太棒了!返回按钮在 Android 上可以正常工作了。
非常感谢!
我注意到没有办法决定面包屑导航的位置,这会很方便。例如,我正在使用类别横幅,我希望面包屑导航位于其上方。
它在下面会有点迷失。
有没有可能改变这一点?
谢谢
我刚注意到一些可以修复(或至少可以选择打开和关闭)的东西。我认为最后的“/”不需要在那里。

所以它将是“Home / General Discussion”,而不是“Home / General Discussion /”。
编辑:
我刚用 CSS 做了这个,但我认为它可以是默认的。如果有人想要:
/* 从最后一个面包屑导航项中删除分隔符(::after 内容) */
.breadcrumbs li:last-child::after {
content: none;
}
这是一个小的调整,但对我来说看起来更好。将底部外边距增加到 1rem,让它有更多“呼吸”空间,但当有横幅时(如果我们必须坚持在页面上的那个位置),它也会使其居中。看看我之前的图片(默认的 0.5rem)与使用 1rem 的对比:

所有 CSS 调整后的最终结果:

CSS:
/* 面包屑导航 - 删除背景并增加底部外边距 */
.breadcrumbs {
background-color: transparent !important;
margin-bottom: 1rem;
}
/* 面包屑导航 - 隐藏“Home”链接的返回箭头 */
.breadcrumbs__title .d-icon {
display: none;
}
/* 面包屑导航 - 从最后一个面包屑导航项中删除分隔符(::after 内容) */
.breadcrumbs li:last-child::after {
content: none;
}
您好,我的论坛收到了一个警告,因为 Discourse 核心即将发生更改:
[管理员通知] 您的某个主题或插件需要更新,以支持 Discourse 核心即将发生的变化。(ID:discourse.script-tag-discourse-plugin)已识别问题:“面包屑链接”。
我正在使用 Discourse cloud,是我自己可以解决这个问题,还是必须等待插件更新?
@manuel 在 GitHub 上我注意到您是此组件的贡献者之一,所以希望在这里提及您没问题吧?
我相信更多人也看到了相同的消息:
[Admin Notice] 主题 'Breadcrumb Links' 包含需要更新的代码。(id:discourse.script-tag-discourse-plugin) (了解更多)
而“了解更多”链接指向:
这个组件有更新的可能性吗?
谢谢!
我刚刚提交了一个修复此问题的 PR,希望贡献者能审核并合并它。
谢谢分享!现在它在没有警告信息的情况下正常工作了。
我遇到了另一个问题,我在下面提到了:
关于这个问题,我问了 ChatGPT,它(因为我不是开发者)回答说:
这个问题很可能源于你从 URL 中提取 topicId 的方式:
const topicId = url.split('/')[2];
如果你的 URL 包含更复杂的模式(例如带有空格、特殊字符或非标准 slug 的标题),这种简单的分割方法将无法可靠地获取正确的 topic ID。
/t/3ple-2015-2019-title/12345 这样的 URL,数字 topic ID 位于末尾,但你的代码假设 topic ID 始终是第三个部分。/t/${topicId}.json),因为你可能会发送一个无效的 topic ID 或 slug,导致返回不正确或默认的类别信息(例如“General”)。使用更可靠的方法从 URL 中提取 topic ID:
Discourse 的 topic URL 通常看起来像 /t/{slug}/{id},例如:
/t/3ple-2015-2019-title/12345
这里的 12345 是 topic ID。
const topicId = url.split('/')[2];
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // 最后一个部分,预计是数字 ID
topicId 是一个数字:if (!/^\\d+$/.test(topicId)) {
console.error("从 URL 中提取的 topic ID 无效:", topicId);
return; // 停止执行
}
updateBreadcrumbs 中将你的代码片段更新为如下:if (url.includes('/t/')) {
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1];
if (!/^\\d+$/.test(topicId)) {
console.error("从 URL 中提取的 topic ID 无效:", topicId);
return;
}
// 然后继续使用 topicId 进行 AJAX 调用
}
这样,无论 URL 中的标题是否复杂或包含空格,你都能始终获取到数字 topic ID,从而修复面包屑类别和路径查找问题。
您能帮忙修复这个问题吗?
提前感谢!![]()