Dokumentation zur Erweiterung von Discourse mit Plugins, Themes und Theme-Komponenten, zur Arbeit mit dem Core-Code und zur Verwendung der Discourse-API.
Einführung
- Einführung: Einführung in die Discourse-Entwicklung
Entwicklungsumgebungen
- Dev Container: Entwicklung von Discourse mit einem Dev Container
- GitHub Codespaces: Entwicklung von Discourse auf GitHub Codespaces
- Docker-Setup: Installation von Discourse für die Entwicklung mit Docker
- macOS-Setup: Installation von Discourse auf macOS für die Entwicklung
- Ubuntu/Debian-Setup: Installation von Discourse auf Ubuntu oder Debian für die Entwicklung
- Windows-Setup: Installation von Discourse auf Windows für die Entwicklung
- Nicht-Docker-Plugins: Installation von Plugins in Ihrer Nicht-Docker-Entwicklungsumgebung
- Lokales Setup: Einrichten einer lokalen Discourse-Entwicklungsumgebung?
- Multisite-Setup: Einrichten einer Multisite-Entwicklungsumgebung
- Fedora-Setup: Einrichten von Discourse für die Entwicklung auf Fedora Linux
Code Interna
- Ember-Komponenten: Ember-Komponenten zu Discourse hinzufügen
- Lint und Formatierung: Code vor Commits automatisch linten und formatieren
- Akzeptanztests: Akzeptanztests und Komponententests für Ember-Code in Discourse schreiben
- Testsuiten ausführen: So führen Sie Discourse Core-, Plugin- und Theme-QUnit-Testsuiten aus
- Versionskompatibilität: Plugin- und Theme-Versionen für ältere Discourse-Installationen festlegen (.discourse-compatibility)
- Ember-Objekt-Eigentümerschaft: Ember-Objekt-Eigentümerschaft (getOwner, Service Injections usw.)
- JS-Performance: Verwendung von Googles ‘tachometer’ zur Messung von JS-Performance-Änderungen in Discourse
- CI mit GitHub Actions: Continuous Integration mit GitHub Actions einrichten
- Markdown-Erweiterungen: Entwicklerleitfaden für Markdown-Erweiterungen
- Konvertieren von Modals: Konvertieren von Modals von Legacy-Controllern zur neuen DModal-Komponenten-API
- DModal API: Verwenden der DModal API zum Rendern von Modal-Fenstern (aka Popups/Dialoge) in Discourse
- JS-API: Verwenden der JS-API
- Plugin-Outlet-Konnektoren: Verwenden von Plugin-Outlet-Konnektoren von einem Theme oder Plugin
- modifyClass: Verwenden von modifyClass zur Änderung des Core-Verhaltens
- Routen erstellen: Erstellen von Routen in Discourse und Anzeigen von Daten
- Authentifizierungsmethode: Hinzufügen einer neuen ‘verwalteten’ Authentifizierungsmethode zu Discourse
- Versehentliche Serialisierung von ActiveRecord-Modellen: Verhindern der versehentlichen Serialisierung von ActiveRecord-Modellen
- Überschreiben von Templates: (nicht empfohlen) Überschreiben von Discourse-Templates von einem Theme oder Plugin
- Service-Objekte: Verwenden von Service-Objekten in Discourse
- System-Spezifikationen: End-to-End-System-Spezifikationen für die Discourse-Benutzeroberfläche schreiben
- FormKit: Discourse Toolkit zum Rendern von Formularen.
- AppEvents-Trigger: AppEvents-Trigger-Referenz
- Transformatoren: Verwenden von Transformatoren zur Anpassung von Client-seitigen Werten und Verhalten
- Anpassung der Themenliste: Anpassen der Themenliste
- CSS-Richtlinien: Richtlinien für CSS-Klassen mit BEM
- Design für Geräte: Design für verschiedene Geräte (Viewport-Größe, Touch/Hover usw.)
Plugins
- Basis-Plugin: Discourse-Plugins entwickeln - Teil 1 - Ein Basis-Plugin erstellen
- Plugin-Outlet: Discourse-Plugins entwickeln - Teil 2 - Mit einem Plugin-Outlet verbinden
- Site-Einstellungen: Discourse-Plugins entwickeln - Teil 3 - Benutzerdefinierte Site-Einstellungen hinzufügen
- Git-Setup: Discourse-Plugins entwickeln - Teil 4 - Git einrichten
- Admin-Oberfläche: Discourse-Plugins entwickeln - Teil 5 - Eine Admin-Oberfläche hinzufügen
- Akzeptanztests: Discourse-Plugins entwickeln - Teil 6 - Akzeptanztests hinzufügen
- Dein Plugin veröffentlichen: Discourse-Plugins entwickeln - Teil 7 - Dein Plugin veröffentlichen
- Neue Gebietsschemata: Ein neues Gebietsschema von Plugin hinzufügen
- Chat-Integration: Einen neuen Anbieter zur Discourse-Chat-Integration hinzufügen
- markdown-it-Erweiterung: Eine markdown-it-Erweiterung als Discourse-Plugin neu verpacken
- Rails-Autoloading: Ein Plugin für Rails-Autoloading strukturieren
Themes Components
- …