您好,
最近的一次更新导致我们的一个组件出现故障。该组件以前是扩展行内引用按钮,即 quote-button.hbs。该文件已不存在 - 相反,所有代码都已移至 gjs 文件 post-text-selection-toolbar.gjs,如果我尝试以“旧方式”覆盖它,浏览器会抱怨并显示以下消息。
component-templates.js:62 [discourse/theme-48/discourse/templates/components/post-text-selection-toolbar] post-text-selection-toolbar 是使用 gjs 编写的,其模板无法被覆盖。正在忽略覆盖。
这是否意味着 Discourse 中的这部分 UI 只能通过其中定义的 PluginOutlets 来定位?
<PluginOutlet
@name="quote-share-buttons-after"
@connectorTagName="span"
/>
<PluginOutlet @name="quote-button-after" @connectorTagName="div" />
如果我需要对按钮的状态以及新增的按钮有更多的控制,该怎么办?我觉得这限制了功能。
有人知道如何处理这种情况吗?
3 个赞
Don
2
你好 
我认为现在使用 api.renderInOutlet 可以做到这一点?
5 个赞
david
(David Taylor)
3
您好 @Sören_Geier - 这是正确的,您需要使用插件插槽来更改 UI 的这部分。插件插槽是扩展事物的更强大的方法,并且在 Discourse 核心更新中会更可靠。
如果现有的插件插槽不适用于您的用例,请告知我们,我们将很乐意考虑引入新的插件插槽。
在这种情况下,您可能会对 DEV: Add outlet and API for adding/controlling post selection buttons by keegangeorge · Pull Request #23782 · discourse/discourse · GitHub 中的提案感兴趣。该提案引入了一个“包装器插件插槽”,它将允许主题/插件在需要时完全替换核心实现。
是的,这是将内容渲染到插件插槽的另一种方法。但它更像是一种代码风格——与 /connectors/... 文件相比,它实际上并没有引入任何新功能。
7 个赞