Johani
(Joe)
12
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)改变主意并选择了不同的解决方案。它将从旧答案中移除该类,并将其添加到新答案中。