为什么我觉得 Discourse 很难自定义?

如果我想编辑 CSS,我必须创建一个组件,创建一个 CSS 文件,然后它就能正常工作。现在,如果我添加另一个组件,例如“Discourse Topic Cards”,然后返回自定义 CSS 文件,应用更改,单击保存,然后刷新页面,自定义 CSS 就不会生效。

另外,为什么在管理员区域没有编辑模板的方法?如果我想编辑“Discourse Topic Cards”模板,我必须 SSH 进入 discourse docker 并进行编辑才能进行更改?

您对 WordPress 更熟悉吗?如果熟悉,您会更容易理解这一点:您永远不要直接编辑核心、插件或主题,因为下次更新时您将丢失所有修改。

因此,许多这些困难实际上并非来自 Discourse,而是来自世界的运作方式 :smirking_face:

5 个赞

您可能需要将 !important 添加到 CSS 中,以便这些规则优先于其他地方定义的规则。当多个组件按特定顺序加载时,就会出现这种情况。这是一个常见问题,不一定特定于 Discourse。我不知道我们是否可以有一个权重系统来指示“该组件应最后加载”,但这听起来确实难以管理。

这就是为什么主题和主题组件不使用 CSS 中的 !important 很重要,除非绝对必要。

如果您想编辑远程主题组件,请随时在 GitHub 上分叉它并创建您自己的版本。这是最简单的方法!但是,您将不会收到原始版本的任何更新。您无法编辑远程组件,因为您的自定义可能会与更新发生冲突(并且处理起来很麻烦)。

自定义 Discourse 非常容易。但这取决于您期望的自定义程度。您在这里想实现什么?也许我们可以提供帮助。如果某个领域欢迎自定义功能,Discourse 团队通常会持开放态度。

1 个赞

我经营网站已经很多年了,我认为如果你能创造出更独特的东西,往往会做得更好。我想自定义“Discourse Cards Topic”模板,并在通用主题列表中包含海报、回复、浏览量和活跃度统计数据。

您可以:

  • 请求功能(在相关主题中,就像您刚才做的那样)
  • 如果可以,请在 Marketplace 发布
  • 学习如何编码以及主题组件的工作原理(请参阅 #documentation:theme-developers),如有任何帮助,请随时向 Dev 提问!
3 个赞

有供编码人员阅读的文档吗?

以下是一些您可能会感兴趣的、用于熟悉 Discourse 的资源:

请慢慢阅读!有些指南也包含指向外部指南的链接。

如果您有疑问,请询问 Dev :+1:

5 个赞

如果您想在 Discourse Topic Cards 主题组件之上进行更改,可以这样做:

  1. 安装 Discourse Topic Cards 并将其添加到您的活动主题中
  2. 创建一个新的主题组件
  3. 将新主题组件也添加到活动主题中

您不必 SSH 进入服务器或更改源代码中的任何内容,也不必分叉存储库。

例如,这是我为 Minima 主题对 Discourse Topic Cards 进行一些更改所做的工作:

这样,您仍然可以从主题中获取新更新,并且所有主题组件都经过组织和分离(因此您可以轻松禁用/启用以进行调试)

但是的,我认为这个过程可以为管理员解释得更好一些。