请 @staff 成员考虑将此主题移至 Customization > Theme component,因为我无法在那里创建新主题。
| 摘要 | Discourse Custom Post Button 可以将 Discourse 帖子中的链接转换为样式化的按钮。 | |
| 仓库 | github.com/koloki-co/discourse-custom-post-button | |
| 安装指南 | 安装主题或主题组件 | |
| Discourse 主题新手? | Discourse 主题使用入门指南 |
安装此主题组件
这是一个由 Koloki Ltd 维护的社区主题组件。它不是官方的 Discourse 组件。目前处于 Alpha 阶段,因此可能存在错误。请在 GitHub 仓库 中报告错误并请求新功能。
截图
按钮
特定用例:“通过私信提问”按钮
功能
- 使用
[wrap]在主题或帖子的任何位置将普通链接转换为按钮。 - 提供 TC 级别可配置的默认背景颜色、边框半径、内边距、字体粗细、文本颜色和悬停不透明度;否则将使用您的站点默认设置。
- 允许单个按钮覆盖默认背景颜色。
- 支持在按钮旁边显示说明性文本。
- 底层内容保持为普通链接,因此按钮可以打开外部页面或内部 Discourse 路由(例如
/new-message)。
重要提示:如果安装了此 TC,您论坛上的任何用户都可以创建这些按钮。若要限制特定用户才能使用按钮功能,则需要一个完整的插件。然而,在实际操作中,用户需要知道它已安装以及如何创建按钮,因此我怀疑真正知道如何操作的人很少。您也可以使用 Watched Words 来过滤包含
[wrap=custom-button]的帖子以供审核,从而限制该功能的使用。
安装
在 Admin > Appearance > Themes & components(管理 > 外观 > 主题与组件)中,打开 Components(组件)选项卡,选择 Install(安装),然后选择 Install from a Git repository URL(从 Git 仓库 URL 安装)。使用以下地址:
https://github.com/koloki-co/discourse-custom-post-button
安装后,将该组件添加到每个需要启用它的活动主题中。
用法
基本按钮
将使用 TC 设置中的默认按钮颜色
[wrap=custom-button][您的自定义按钮文本](https://example.com)[/wrap]
单个按钮颜色设置
[wrap=custom-button color=#7CC146][您的自定义按钮文本](https://example.com)[/wrap]
按钮后跟说明性文本
[wrap=custom-button][您的自定义按钮文本](https://example.com)[/wrap]
[wrap=text-after-button]额外的说明性文本[/wrap](在新的一行)
向群组发送私信
(注:这使用了 Discourse 的内置功能来打开带有预填充文本的编辑器——该功能部分并非来自主题组件,我只是用它来演示一个可能的用例。需要群组设置允许向该群组发送私信。)
[wrap=custom-button][向我们提问](/new-message?groupname=somegroup&title=Aask%20Us&body=Please%20type%20your%20question%20here.)[/wrap]
请使用群组的 slugified name(小写化名称)而不是其“完整名称”,并对参数值进行 URL 编码。群组的**谁可以向该群组发送消息?**设置仍然决定谁可以打开已寻址的编辑器,未登录的访客将被要求登录。
设置
| 设置项 | 用途 |
|---|---|
button_default_color |
默认按钮背景和边框颜色 |
button_border_radius |
按钮圆角半径 |
button_padding |
按钮标签周围的间距 |
button_font_weight |
按钮标签粗细 |
button_text_color |
按钮标签颜色 |
button_hover_opacity |
悬停时按钮的不透明度 |
该组件还公开了一个 svg_icons 设置,用于可用的主题图标,但目前它不会在帖子按钮中插入图标。如果有需求,我会添加此功能。
备注
- 该组件仅更改呈现方式。按钮仍然是链接,目标权限保持不变。
- 电子邮件客户端和其他不加载活动 Discourse 主题的环境可能会显示底层链接,而不显示按钮样式。
- 该组件根据 MIT 许可证 授权。
该组件源自在 如何在主题帖子中嵌入按钮 中讨论的同样有用的 [wrap] 模式。


