何时使用插件还是主题组件?

我需要对一些视图进行一些小的更改:
例如:

即使只是像 CSS 这样的小改动,我也需要为每次更改创建一个插件吗?
感谢您的帮助。

1 个赞

不,只有在您打算更改后端时才需要插件。

如果只是本地更改,您可以转到“管理”->“自定义”->“主题”,然后在新的“主题组件”中输入更改,然后将其添加到当前主题。

请查看 https://meta.discourse.org/c/documentation/theme-developers/127,特别是:

8 个赞

谢谢!
所以,如果我需要更改标签或添加工具提示,我需要创建一个主题,但如果我需要向页面(例如主题列表)添加新列,我需要创建一个插件?

区别在于:

  • 如果您需要更改 API,例如 .json 路由中的任何数据、授权更改、数据后端处理,则需要插件
  • 对于许多不需要不同数据的前端更改,您只需要一个 TC。即许多表示法更改,或 JavaScript 中任何不敏感的逻辑。
5 个赞

还有一个灰色地带(我认为在这里不适用),那就是如果你需要的数据不可用(例如用户自定义字段),你可以选择使用 AJAX 在需要时用 JavaScript 拉取该数据,或者使用一个插件将数据添加到序列化器中。

5 个赞

好的,谢谢。在指南中,我不明白如何在本地设置和导入 TC,只有远程 TC 的示例。

我建议使用这个很棒的工具,在本地轻松创建 TC:

2 个赞

除非你的 CSS 更改非常小,否则我建议使用远程主题或 CLI 工具。

但如果你点击“安装主题”对话框,它将允许你创建一个主题(如果你在组件页面上进行操作,则创建一个组件主题)。

在类别主题列表中,我需要在“created_at”列中添加一个新列,并将日期从“tiny”更改为扩展格式(例如:DD/MM/YYYY HH:MM)。

如果你想给模板添加新内容,我建议从 GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes 开始,但我不知道如何在那里添加一个列。我猜你可以做一些 JavaScript 的魔法,但这不属于我的专长。

你知道鼠标悬停时可以看到这些信息,对吧?

另请参阅 插件出口位置主题组件,但那里没有插件出口。

2 个赞

您有这些插件插槽:topic-list-after-columnstopic-list-header-after

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/list/topic-list-item.hbr#L90

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/topic-list-header.hbr#L27

抓得好。那里似乎没有插槽是错误的。我猜主题组件只是没有显示它。

1 个赞

插件出口位置主题组件目前不显示原始出口。

此主题组件向您展示如何添加列 GitHub - discourse/discourse-add-category-column

3 个赞