如图所示,普通插件没有自定义的“css+html”,而大多数“主题组件”通常需要调整“css+html”,这导致我们创建了大量的相应自定义css,使我们难以识别
通常,我们建议使用 GitHub 或类似的版本控制系统,这样可以更轻松地跟踪代码随时间的变化。
我们之前在所有主题和主题组件上都有一个 CSS/HTML 按钮,但在编辑远程主题时,远程存储库中的上游更改会覆盖本地自定义,这是一种非常糟糕的体验,使人们不敢更新。
我猜一个可能的解决方案是将自定义层与远程存储库分开,但这实际上是我们现在推荐的做法(使用主题组件对远程主题进行本地自定义),但也许步骤会少一些。
一种解决方案,特别是对于主题组件,可以分叉主题组件并在您自己的分叉中进行更改。
“我的意思是,当我们使用别人的插件时,在很多情况下,我们用户需要一些自定义 CSS 来调整外观,但那些插件没有自定义 CSS 的选项,这导致我们不得不创建独立的 CSS 插件来匹配相应的插件,从而导致插件混乱,非常令人困惑。
所以我希望官方能在 GitHub 上使用插件时提供自定义支持,例如:安装插件后自动附加可自定义的 CSS+HTML 选项。如果我们不设置,则无需保存任何数据。如果我们设置了,则根据“插件 ID”生成并存储数据。当然,我不知道具体该如何实现。
请看看我的自定义 CSS 的数量,你就会真正理解这有多复杂。由于别人的 GitHub 插件更新,我经常找不到我的自定义 CSS 文件……
如果您希望 Discourse 实例中没有负责为特定插件添加自定义 CSS 的独立主题组件,您可以创建一个主题组件,负责您为已安装插件进行的所有独特自定义。
在该主题组件内,您可以将所有文件拆分为多个 .scss 文件,并在主 common.scss 文件中导入它们。
my-theme-component/
├── about.json
├── common/
│ ├── common.scss
│ └── head_tag.html
├── scss/
│ ├── announcement-bar.scss
│ ├── banner-featured-links.scss
│ ├── category-banners.scss
│ ├── disco-toc.scss
│ ├── topic-list-excerpts.scss
│ ├── topic-list-thumbnails.scss
│ └── disco-toc.scss
└── settings.yml
我知道有许多方法可以实现自定义 CSS,但我发帖的目的是让 Discourse 更有用并提供建议。我理解您回复的结果。总之,您对让 Discourse 更简洁不感兴趣。更新您的回复,此主题就可以关闭了。
你说得对,我的错,我误解了。我主要是想提出一个建议来帮助你解决具体问题,并强调我们为主题组件提供的 .scss 文件拆分功能,我猜你可能不知道。
也许这个话题更适合放在 Feature 板块,然后产品团队可以介入评估是否适合添加。
我更希望在组件设置中有一个专用的 CSS 相关自定义层,并带有一个启用或禁用它的按钮。对于任何与 HTML 相关的,最好是分叉该组件,因为我认为它在单独的层中没有意义。我认为这会让用户更容易管理,同时减少不必要的组件膨胀。![]()
这是我和 @david 最近讨论过的一个想法。
我认为这个想法值得考虑,但我们需要仔细思考其中的风险——主题系统已经相当灵活了,而且人们已经有很多方式会给自己带来麻烦,而这些麻烦并非总是立即可见的。
有了主题、组件以及在不断变化的 Discourse 之上的手动自定义,人们很容易在他们自己构建的依赖图中暴露于破坏性更改。
我们将在不久的将来进行一些主题方面的工作,这将以各种方式考验我们的主题系统,并可能促使我们优先处理这里的一些更改,但在此过程中,我们将更深入地思考如何实现更易于维护的自定义。这还不清楚会把我们引向何方,但这可能会影响我们对这个请求的看法。

