取消对“模板覆盖”和移动特定模板的支持

过去,您可以通过在主题和插件的 templates/ 目录中添加一个同名文件来覆盖 Discourse 路由或组件的 .hbs 模板。这非常强大,但也带来了显著的可维护性问题。

因此,在过去几年中,我们一直不建议进行模板覆盖,并于 2024 年 11 月 正式弃用了模板覆盖。如今,更好的解决方案是使用 包装插件插槽 来渲染核心内容的位置。

本月(2025 年 3 月),我们将为模板覆盖引入管理员警告横幅,并计划在第二季度末前完全移除支持。

时间线

(估计日期 - 可能变更)

  • :white_check_mark: 2024 年 11 月 - 引入弃用

  • :white_check_mark: 2025 年 3 月 - 启用管理员警告横幅

  • :white_check_mark: 2025 年 6 月 - 移除功能(目标是 6 月 2 日当周)

升级主题/插件

主题和插件开发者应参考 插件插槽 指南,了解有关包装插件插槽的更多信息。如果您想为您的用例请求新的扩展点,请随时打开 PR 或 Dev 主题。

9 个赞

有什么方法可以轻松查看是哪个主题/插件触发了此管理员通知?我查看了我所有的主题和插件,在它们任何一个的 Git 存储库的根目录中都没有找到 templates/ 目录。

2 个赞

它在 /assets/javascripts/discourse/javascripts/discourse 中,不在根目录。

2 个赞

警告横幅应显示主题/插件的名称。它也会在浏览器开发者控制台中打印出来。

如果不是这样,那可能是我们与弃用有关,您能否分享一个受影响网站的链接?

谢谢。它没有显示在警告横幅中,但显示在开发者控制台中,尽管不是很清楚。

原来是这个组件。

4 个赞

感谢 @JonahAragon1。主题识别应该比这清晰得多,我会把它修复好的 :eyes:

2 个赞

此更改将修复警告横幅,使其更清晰地识别主题:

4 个赞

您是否找到了恢复 DDG 作为搜索建议的解决方案?我现在已禁用该组件。

不,我只是决定完全禁用该表单。我认为我的社区里没有人使用它,而且我也没有看到它的用处。我看到组件作者提议了一个需要核心更改的更新,所以它可能很快就会再次工作了。

2 个赞

这意味着实验性用户卡将在完全弃用之前被引入核心吗?我目前收到此组件的警告 GitHub - discourse/experimental-usercard

1 个赞

我们已归档 experimental-usercard 存储库,并且不再打算进一步更新该主题组件。因此,恐怕您需要在 2025 年 6 月阻止模板覆盖之前禁用它。

我们确实希望在某个时候将实验的一部分纳入核心,但目前还没有具体的时间表。用户卡是 UI 中一个经过大量定制的部分,因此对其进行重大更改需要仔细规划和跨生态系统的更改。

3 个赞

一切都按计划进行,我们打算在6月2日当周开始移除对模板覆盖的支持。

由于这将在3.5稳定版发布之前发生,我们已将管理员警告横幅反向移植到3.4稳定版,以便稳定版上的社区在更新到3.5之前能得到充分的警告。

(抄送 @RGJ,因为我知道你在稳定版上托管了许多论坛)

4 个赞

模板覆盖和移动设备特定模板的支持已被弃用

3 个赞

我也遇到了这个不明确的错误(只指向“默认”主题)。控制台中的提示很有帮助。我认为这在我们的自定义 CSS 中,但我最近才接管这个论坛,所以需要花点时间研究一下。预计什么时候会出问题,这样我就可以及时安排时间研究了?


Screenshot 2025-07-26 at 16.16.52

Discourse 核心的最新版本已移除模板覆盖,因此您可能运行的是旧版本。下次更新到最新版本时,覆盖将停止工作。

您的默认主题中可能存在类似 \u003cscript type=\"text/x/handlebars\"\u003e 的内容,应将其移除。

1 个赞

嗯。有意思。我们的 DevOps 团队更新到 3.4.6 后,我们才开始看到这个横幅。自定义覆盖仍然在渲染(你说的关于它的位置/外观是正确的)。有可能 ChatGPT 误解了这个覆盖的作用,我还在弄清楚这一切

一切都已修复,警告已消失,样式已保留。太棒了。

1 个赞