自定义组件 -- 在任何插件插口添加按钮或文本

:information_source: 摘要 在任何位置添加按钮或文本
:hammer_and_wrench: 仓库 https://github.com/literatecomputing/discourse-custom-components
:question: 安装指南 如何安装主题或主题组件
:open_book: 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 粘贴到插件插口,只是想看看它会是什么样子吗?这个也可以做到。

它如何帮助开发者

这个主题包含了一些简单的示例,说明如何:

但在 .gjs 文件中的 <template> 内尝试这样做时,它的工作方式略有不同(例如 {{htmlSafe component.text}}

15 个赞

空格使文本不加粗。


很棒的组件!

5 个赞

是否可以在按钮 URL 中添加占位符,例如让 URL 包含用户所在的 topic ID?

我不确定。如果你有预算,我会看看。

如果按钮有主题 ID,它会做什么?

如果你解决了并且想提交一个 PR,我可能会接受。

我很确定答案是否定的,但你可以使用这里描述的变通方法

2 个赞

您好 @pfaffman

我们希望为我们企业账户用户组中的每位成员添加这样一组按钮。
该按钮将触发创建一个新的私人消息,其中包含用户当前所在的 URL。

这样,我们的企业客户就可以向我们发送固定、突出显示或“赞助”特定主题的请求。

1 个赞

如你所知,你可以创建一个打开新主题撰写器的 URL。你可以让主题组件添加该链接。

我认为,如果不向主题组件添加代码,这是不可能实现的(但也许可以?)。也许有人对此有想法,并在此(或其他主题)提供解决方案。如果没有,你可以联系我,或在 Marketplace 发布你所需内容的描述和预算。

3 个赞