| | | |\n|— | — | —|\n|:information_source: | 摘要 | 在任何位置添加按钮或文本|\n|:hammer_and_wrench: | 代码库 | https://github.com/literatecomputing/discourse-custom-components|\n|:question: | 安装指南 | 如何安装主题或主题组件|\n|:open_book: | 不熟悉 Discourse 主题? | Discourse 主题使用入门指南|\n\n\u003c!-- 填写 "repoName" 和 "repoURL" 以实现自动安装按钮 –\u003e\n\n[wrap=theme-install-button repoName="Custom Components" repoUrl="https://github.com/literatecomputing/discourse-custom-components\"]\n安装此主题组件\n[/wrap]\n\n\u003c!-- 用一两句话描述此主题/组件 –\u003e\n\n在任何插件插槽中添加链接按钮或任意文本。(忽略图片中的水印——这些截图是在暂存/测试站点上截取的。)\n\n\u003c!-- 适时添加截图 –\u003e\n\n
\n\n\n\n\n\n\u003c!-- 适时添加更多细节并解释设置 –\u003e\n\n我开始开发这个插件是为了有人想在用户个人资料和用户卡片上显示一个“点击此按钮订阅,以便您可以发送私人消息”的按钮。他们希望在用户无法发送私人消息时显示该按钮。由于我并不总是像我想象的那么聪明,所以我使用组来确定是否显示按钮来编写组件。这种方法的一个问题是,工作人员不在订阅组中,因此他们会得到“你必须订阅”的按钮,即使他们可以发送私人消息。此外,该组是隐藏的,因此无论如何都无法在主题组件中使用它。我重写了那个主题组件,使用currentUser.can_send_private_messages 来确定是否显示按钮。\n\n### 这是为谁准备的?\n\n如果你想在其中放置一个带有链接的按钮,或者一些为特定组显示或隐藏的任意文本,这个组件可以让你将它们插入到任何插件插槽中。你想在每条消息之间添加一个“你该订阅”的链接按钮,但除了非会员之外?这个组件可以做到。你想在插件插槽中插入一些任意的 HTML,只是为了看看它是什么样子?这个组件也可以做到。\n\n### 它如何帮助开发者\n\n这个主题包含一些简单的示例,说明如何:\n- 使用 https://meta.discourse.org/t/objects-type-for-theme-setting/305009\n- 使用 api.renderInOutlet(如此处所述),将 Glimmer 组件放置在由设置控制的插槽中,而不是在 connectors 目录中创建文件\n- 编写一个简单的 Glimmer 组件,该组件可以访问 currentUser\n- 将组件包装在另一个(内联)模板中,以便能够向其传递数据\n- 显示来自主题设置的任意 HTML,摆脱 Markdown 的限制——当然,也许 \n[quote="Discourse, post:1, topic:82557"]\n你可以在这里使用 Ember 的 html-safe 助手,它会渲染 HTML 而不是文本。\n[/quote]\n\n但如果你想在 .gjs 文件中的 \u003ctemplate\u003e 中这样做,它的工作方式会有点不同(例如 {{htmlSafe component.text}})



