How do I customise the styling of "solved topics" in the main list?

TL;DR

这将为标记为答案的帖子添加一个 topic-solution 类。

api.addPostClassesCallback((attrs) => {
  if (attrs.accepted_answer) return ["topic-solution"];
});

帖子所拥有的类是在此处确定的。

您需要的钩子已经存在于该文件的末尾……如下所示。

plugin-api 提供了一个方法,允许您根据条件为帖子添加类。

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/plugin-api.js#L819-L829

其作用是应用给定的回调,并在条件满足时返回要添加的类。

当回调被触发时,Discourse 会将帖子属性传递给它。因此,您可以执行类似以下的操作。

api.addPostClassesCallback((attrs) => {
  console.log(attrs);
});

如果您检查控制台,会看到它显示了每个帖子的属性。

这些只是示例,其中还有更多内容。

幸运的是,当帖子被标记为解决方案时,Discourse 会记录这一点,并将其添加到帖子属性中。该属性名为 accepted_answer

因此,您只需检查该属性是否为真,如果为真则添加自定义类。如下所示:

api.addPostClassesCallback((attrs) => {
  if (attrs.accepted_answer) return ["topic-solution"];
});

这足以切换类,即使原始发布者(OP)改变主意并选择了不同的解决方案。它将从旧答案中移除该类,并将其添加到新答案中。