Ein Plugin in Discourse zu erstellen, kann wirklich einfach sein, sobald man ein paar Eigenheiten verstanden hat. Ziel dieses Beitrags ist es, ein Grundgerüst für ein Plugin zu erstellen und Sie mit den Grundlagen vertraut zu machen.
Ihre Entwicklungsumgebung
Stellen Sie sicher, dass Sie eine Entwicklungsumgebung von Discourse auf Ihrem Computer laufen haben. Ich empfehle Ihnen, den entsprechenden Einrichtungsleitfaden zu nutzen und erst zurückzukehren, wenn Sie fertig sind.
plugin.rb
Verwenden Sie GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub, um ein vollständiges Discourse-Plugin-Grundgerüst in Ihrem Plugins-Verzeichnis zu erstellen
Das Grundgerüst ist nun im Discourse-Kern enthalten.
rake plugin:create[plugin-name]erstellt ein Plugin mithilfe des Grundgerüsts.
Beim Start von Discourse wird im Verzeichnis plugins nach Unterordnern gesucht, die eine plugin.rb-Datei enthalten. Die Datei plugin.rb hat zwei Zwecke: Sie dient als Manifest für Ihr Plugin mit den erforderlichen Informationen über Ihr Plugin, einschließlich Name, Kontaktinformationen und Beschreibung. Der zweite Zweck besteht darin, den für den Betrieb Ihres Plugins erforderlichen Ruby-Code zu initialisieren.
In unserem Fall fügen wir keinen Ruby-Code hinzu, aber wir benötigen trotzdem die plugin.rb. Erstellen wir das Verzeichnis basic-plugin mit der Datei plugin.rb darin, mit folgendem Inhalt:
basic-plugin/plugin.rb
# name: basic-plugin
# about: Ein super einfaches Plugin, um zu demonstrieren, wie Plugins funktionieren
# version: 0.0.1
# authors: Awesome Plugin Developer
# url: https://github.com/yourusername/basic-plugin
Sobald Sie diese Datei erstellt haben, sollten Sie Ihren lokalen Server neu starten, und das Plugin sollte geladen werden.
Eine wichtige Falle!
Wenn Sie mit der normalen Rails-Entwicklung vertraut sind, werden Sie vielleicht feststellen, dass Plugins beim Neuladen nicht ganz so komfortabel sind. Im Allgemeinen sollten Sie beim Ändern Ihres Plugins den Server mit Strg+c stoppen und ihn anschließend erneut mit bin/dev starten.
Meine Änderungen wurden nicht übernommen! 
Manchmal wird der Cache nicht vollständig geleert, insbesondere wenn Sie neue Dateien erstellen oder alte löschen. Um dieses Problem zu umgehen, entfernen Sie Ihren tmp-Ordner und starten Sie Rails erneut. Auf einem Mac können Sie dies mit einem einzigen Befehl tun: rm -rf tmp; bin/dev.
Überprüfen, ob Ihr Plugin geladen wurde
Nachdem Sie Ihren lokalen Server neu gestartet haben, besuchen Sie die URL /admin/plugins (stellen Sie sicher, dass Sie sich zuerst als Administrator angemeldet haben, da nur Administratoren das Plugin-Registrierungsfeld sehen können).
Wenn alles funktioniert hat, sollten Sie Ihr Plugin in der Liste sehen:
Herzlichen Glückwunsch, Sie haben gerade Ihr erstes Plugin erstellt!
Fügen wir etwas JavaScript hinzu
Derzeit macht Ihr Plugin nichts. Fügen wir eine JavaScript-Datei hinzu, die beim Laden von Discourse eine Alarmbox anzeigt. Dies wird für jeden Benutzer sehr störend sein und wird nicht als echtes Plugin empfohlen, zeigt aber, wie JavaScript in unsere laufende Anwendung eingefügt wird.
Erstellen Sie die folgende Datei:
plugins/basic-plugin/assets/javascripts/discourse/initializers/alert.js
export default {
name: "alert",
initialize() {
alert("Alarmboxen sind nervig!");
},
};
Wenn Sie Ihren lokalen Server nun neu starten, sollten Sie „Alarmboxen sind nervig!



