Vorheriges Tutorial: Developing Discourse Plugins - Part 1 - Create a basic plugin
Erste Schritte: Handlebars-Vorlagen
Die Client-Anwendung von Discourse ist mit dem Ember.js Javascript-Framework geschrieben. Ember verwendet Handlebars für alle HTML-Vorlagen. Unter diesem Link finden Sie eine großartige Einführung in die Template-Sprache, lesen Sie diese also unbedingt gründlich durch.
Das Problem: Elemente zur Discourse-Benutzeroberfläche hinzufügen
Viele Plugins müssen die Discourse-Weboberfläche erweitern und ihr Elemente hinzufügen. Wir stellen dafür einen Mechanismus namens Plugin Outlets in Handlebars-Vorlagen bereit.
Wenn Sie die Handlebars-Vorlagen von Discourse durchsuchen, werden Sie häufig den folgenden Markup sehen:
<PluginOutlet @name="edit-topic" />
Dies deklariert ein Plugin Outlet namens „edit-topic“. Es ist eine Erweiterungsstelle in der Vorlage, die Plugin-Autoren nutzen können, um ihr eigenes Handlebars-Markup hinzuzufügen.
Wenn Sie Ihr Plugin erstellen, suchen Sie in den Discourse Handlebars-Vorlagen (in .hbs-Dateien), die Sie ändern möchten, nach einem <PluginOutlet />. Wenn keines vorhanden ist, fragen Sie uns einfach, ob wir es erweitern können! Wir fügen sie gerne hinzu, wenn Sie einen guten Anwendungsfall haben. Wenn Sie es uns einfacher und schneller machen möchten, reichen Sie bitte einen Pull Request auf GitHub ein!
Wenn Sie sehen möchten, wo Plugin Outlets existieren, können Sie den folgenden Befehl ausführen, wenn Sie OSX oder Linux verwenden:
git grep "<PluginOutlet" -- "*.hbs"
Sie können die Plugin Outlets auch auf einer Discourse-Seite anzeigen, indem Sie die Discourse Developer Toolbar aktivieren. Geben Sie einfach enableDevTools() in die Browserkonsole eines Discourse-Forums ein und klicken Sie auf das Plug-Symbol, das auf der linken Seite der Seite erscheint.
Verbindung zu einem Plugin Outlet
Sobald Sie das Plugin Outlet gefunden haben, dem Sie etwas hinzufügen möchten, müssen Sie einen connector dafür schreiben. Ein Connector ist im Grunde nur eine Handlebars-Vorlage, deren Dateiname connectors/<outlet name> enthält.
Wenn die Discourse Handlebars-Vorlage beispielsweise Folgendes enthält:
<PluginOutlet @name="evil-trout" />
Dann werden alle Handlebars-Dateien, die Sie im Verzeichnis connectors/evil-trout erstellen, automatisch angehängt. Wenn Sie also die Datei erstellt haben:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.hbs
Mit dem Inhalt:
<b>Hello World</b>
Würde Discourse <b>Hello World</b> an dieser Stelle in der Vorlage einfügen.
Beachten Sie, dass wir die Datei hello.hbs genannt haben – der letzte Teil des Dateinamens spielt keine Rolle, aber er muss für jedes Plugin eindeutig sein. Es ist sinnvoll, ihm einen Namen zu geben, der beschreibt, was Sie erweitern. Dies erleichtert das Debugging in Zukunft.
Fehlerbehebung
- Überprüfen Sie den Namen des Connectors und stellen Sie sicher, dass er perfekt mit dem Plugin-Namen übereinstimmt.
Weitere Informationen
Mehr in der Serie
Teil 1: Plugin-Grundlagen
Teil 2: Dieses Thema
Teil 3: Site-Einstellungen
Teil 4: Git-Setup
Teil 5: Admin-Schnittstellen
Teil 6: Akzeptanztests
Teil 7: Veröffentlichen Sie Ihr Plugin
Dieses Dokument wird versioniert – schlagen Sie Änderungen auf github vor.



