Hey.
Ich bin noch ziemlich neu bei der Erstellung von Discourse-Plugins, aber ich würde gerne wissen, ob mir jemand erklären kann, wie man einen zusätzlichen Button im Beitragsmenü hinzufügt. Soweit ich das überblicke, sollte das über ein benutzerdefiniertes Plugin gelöst werden.
Zum Beispiel ein Button „Hat dich zum Lachen gebracht“, der ähnlich wie der „Gefällt mir“-Button funktioniert – also speichert, wie viele Personen auf einen Beitrag oder Kommentar geklickt haben.
Mir ist das Retort-Plugin bekannt, aber das löst mein Problem nicht, da ich vor allem verstehen möchte, wie man einen solchen Button hinzufügt.
Hallo,
das ist eine knifflige Aufgabe. Aus meiner Erfahrung sollte das über ein Plugin gelöst werden. Du musst einen zusätzlichen Button zum post-menu-Widget hinzufügen und eine Migration für die Datenbank erstellen, um deine „Made you laugh"-Reaktionen zu speichern.
Als Inspiration kannst du das Discourse-Solved-Plugin verwenden:
Dieses Plugin fügt ebenfalls einen zusätzlichen Button zum Post-Menü hinzu und bietet Funktionen, die in der Datenbank gespeichert werden.
Stelle sicher, dass du den Entwicklerleitfaden zum Erstellen von Plugins liest:
Viel Erfolg!
Vielen Dank, @zcuric! Ich habe versucht, dieses Plugin und auch Retort zu verstehen, hatte bisher aber noch keinen Erfolg. Ich werde jedoch weiter in diese Richtung arbeiten.
Könntest du mir bitte einen Hinweis geben, wie Discourse die Darstellung des Like-Buttons verwaltet? Insbesondere: Wie wird der Like-Button bei eigenen Beiträgen ausgeblendet? Dann könnte ich dasselbe für meinen benutzerdefinierten Button umsetzen.
@marek Gerne geschehen. Du hast den Code ein wenig durchgesehen, beginnend hier:
Hinsichtlich des Backends handelt es sich zu 99 % um eine API-Anfrage. Ich habe mich nicht tiefer damit beschäftigt. Wahrscheinlich ein Endpunkt. Meine Vermutung ist, dass du beim Erstellen eines Plugins REST-API-Routen mit GET-, POST- und DELETE-Endpunkten erstellen musst, die die Daten in deinem Datenbankfeld füllen, das du durch eine Datenbankmigration hinzugefügt hast. Dies wird mit Rails umgesetzt. Zumindest würde ich die Situation so angehen.