Vorheriges Tutorial: Developing Discourse Plugins - Part 1 - Create a basic plugin
Erste Schritte: Handlebars-Vorlagen
Die Client-Anwendung von Discourse ist mit dem Javascript-Framework Ember.js geschrieben. Ember verwendet Handlebars für alle HTML-Vorlagen. Unter diesem Link finden Sie eine hervorragende Einführung in die Vorlagensprache, lesen Sie diese daher unbedingt gründlich durch.
Das Problem: Hinzufügen von Elementen zur Discourse-Benutzeroberfläche
Viele Plugins müssen die Discourse-Weboberfläche erweitern und ihr Elemente hinzufügen. Wir stellen einen Mechanismus dafür bereit, der als Plugin-Outlets in Handlebars-Vorlagen bezeichnet wird.
Wenn Sie die Handlebars-Vorlagen von Discourse durchsuchen, werden Sie häufig die folgende Markierung 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 ihre eigenen Handlebars-Markups 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 werden sie gerne hinzufügen, 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, an welchen Stellen 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-Site anzeigen, indem Sie die Discourse Developer Toolbar aktivieren. Geben Sie einfach enableDevTools() in die Browserkonsole eines Discourse-Forums ein und klicken Sie auf das Steckersymbol, 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 eigentlich 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 hätten:
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 die Vorlage einfügen.
Beachten Sie, dass wir die Datei hello.hbs genannt haben – der letzte Teil des Dateinamens ist nicht wichtig, 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 Debuggen 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.



