TL;DR
Dies fügt einer als Antwort markierten Beiträge die Klasse topic-solution hinzu.
api.addPostClassesCallback((attrs) => {
if (attrs.accepted_answer) return ["topic-solution"];
});
Die Klassen, die ein Beitrag hat, werden hier bestimmt.
Der gewünschte Hook befindet sich bereits ganz am Ende davon – so wie hier:
Die plugin-api verfügt über eine Methode, mit der Sie einem Beitrag basierend auf einer Bedingung Klassen hinzufügen können.
Das bewirkt, dass ein bestimmter Callback ausgeführt wird und eine Klasse zurückgegeben wird, die hinzugefügt werden soll, wenn die Bedingung erfüllt ist.
Wenn der Callback ausgelöst wird, übergibt Discourse die Beitragsattribute an ihn. Sie können also beispielsweise so etwas tun:
api.addPostClassesCallback((attrs) => {
console.log(attrs);
});
Wenn Sie die Konsole überprüfen, sehen Sie, dass die Attribute jedes Beitrags angezeigt werden.
Dies sind nur Beispiele; es gibt noch mehr darin.
Zum Glück für Sie merkt sich Discourse, wenn ein Beitrag als Lösung markiert wird, und fügt dies den Beitragsattributen hinzu. Die Eigenschaft heißt accepted_answer.
Sie müssen also nur prüfen, ob dies wahr ist, und Ihre benutzerdefinierte Klasse hinzufügen, falls ja. So geht’s:
api.addPostClassesCallback((attrs) => {
if (attrs.accepted_answer) return ["topic-solution"];
});
Das sollte ausreichen, um die Klasse auch dann umzuschalten, wenn der OP seine Meinung ändert und eine andere Lösung auswählt. Die Klasse wird dann vom alten Antwortbeitrag entfernt und zum neuen hinzugefügt.
