Einen Plugin in Discourse zu erstellen, kann wirklich einfach sein, sobald man ein paar Eigenheiten kennt. 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 Discourse-Entwicklungsumgebung auf Ihrem Computer laufen haben. Ich empfehle Ihnen, den entsprechenden Einrichtungsleitfaden zu verwenden 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 Plugin-Verzeichnis zu erstellen
Das Grundgerüst ist jetzt in Discourse-Kern enthalten.
rake plugin:create[plugin-name]erstellt ein Plugin mit dem Grundgerüst.
Wenn Discourse startet, sucht es im plugins-Verzeichnis nach Unterverzeichnissen, die eine plugin.rb-Datei enthalten. Die plugin.rb-Datei 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 die Ausführung 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 Fallstrick!
Wenn Sie an eine normale Rails-Entwicklung gewöhnt sind, werden Sie möglicherweise feststellen, dass Plugins beim Neuladen nicht ganz so angenehm sind. Im Allgemeinen sollten Sie beim Ändern Ihres Plugins den Server mit Strg+c stoppen und ihn dann 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 neu. Auf einem Mac können Sie dies mit einem 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 Administratorkonto angemeldet haben, da nur Administratoren das Plugin-Register 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
Momentan macht Ihr Plugin nichts. Fügen wir eine JavaScript-Datei hinzu, die beim Laden von Discourse ein Alert-Fenster öffnet. 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("Alert-Fenster sind nervig!");
},
};
Wenn Sie jetzt Ihren lokalen Server neu starten, sollten Sie „Alert-Fenster sind nervig!

