| 摘要 | 在任何位置添加按钮或文本 | |
| 仓库 | https://github.com/literatecomputing/discourse-custom-components | |
| 安装指南 | 如何安装主题或主题组件 | |
| Discourse 主题新手? | Discourse 主题使用入门指南 |
安装此主题组件
在任何插件插口处添加链接按钮或任意文本。(忽略图片中的水印——这些截图是在暂存/测试站点上截取的。)
要查看插件插口在哪里,请使用 Introducing Discourse developer toolbar 来查找它们。如果你不知道什么是插件插口,可以查看 https://meta.discourse.org/t/using-plugin-outlet-connectors-from-a-theme-or-plugin/32727,但此组件允许你在一定限制下,将文本插入到任何插件插口,而无需编程或真正理解什么是插件插口。
我开始开发这个插件是为了满足某人的需求,他想在用户个人资料和用户卡片上显示一个“点击此按钮订阅以便发送私信”的按钮。他希望在用户无法发送私信时显示该按钮。由于我并不总是像我想象的那么聪明,我使用组来确定按钮的显示方式来编写该组件。这种方法的一个问题是,工作人员不在订阅者组中,因此即使他们可以发送私信,也会看到“你必须订阅”的按钮。此外,该组是隐藏的,因此无论如何都不可能在主题组件中使用它。我重写了那个主题组件,使用 currentUser.can_send_private_messages 来确定是否显示该按钮。
谁适合使用?
如果你想放置一个带有链接的按钮,或者一些根据特定组显示或隐藏的任意文本,这将允许你将它们插入到任何插件插口中。你想在除非成员外的每条消息之间添加一个“你应该订阅”的链接按钮吗?这个可以做到。你想将任意 HTML 粘贴到插件插口,只是想看看它会是什么样子吗?这个也可以做到。
它如何帮助开发者
这个主题包含了一些简单的示例,说明如何:
- 使用 Objects type for theme setting
- 使用
api.renderInOutlet(如此处所述)将 Glimmer 组件固定到由设置控制的插口,而不是在connectors目录中创建文件 - 编写一个简单的 Glimmer 组件,该组件访问
currentUser - 将组件包装在另一个(内联)模板中,以便能够向其传递数据
- 从主题设置中显示任意 HTML,不受 Markdown 的限制——当然,也许
但在 .gjs 文件中的 <template> 内尝试这样做时,它的工作方式略有不同(例如 {{htmlSafe component.text}})



