Dokumentation zur Erweiterung von Discourse mit Plugins, Themes und Theme-Komponenten, zur Arbeit mit dem Kerncode und zur Nutzung 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: Einrichtung einer lokalen Discourse-Entwicklungsumgebung?
- Multisite-Setup: Einrichtung einer Multisite-Entwicklungsumgebung
- Fedora-Setup: Einrichtung von Discourse für die Entwicklung auf Fedora Linux
Code & Internals
- Ember-Komponenten: Hinzufügen von Ember-Komponenten zu Discourse
- Linting und Formatierung: Automatisches Linting und Formatieren von Code vor Commits
- Akzeptanztests: Schreiben von Akzeptanztests und Komponententests für Ember-Code in Discourse
- Test-Suiten ausführen: Ausführen der Discourse-Kern-, Plugin- und Theme-QUnit-Test-Suiten
- Versionskompatibilität: Festlegen von Plugin- und Theme-Versionen für ältere Discourse-Installationen (d-compat-Branches)
- Ember-Objektbesitz: Ember-Objektbesitz (getOwner, Service-Injektionen usw.)
- JS-Performance: Verwendung von Googles „tachometer“ zur Messung von JS-Performance-Änderungen in Discourse
- CI mit GitHub Actions: Einrichtung der Continuous Integration mit GitHub Actions
- Markdown-Erweiterungen: Entwicklerhandbuch für Markdown-Erweiterungen
- Konvertierung von Modals: Konvertierung von Modals von Legacy-Controllern zur neuen DModal-Komponenten-API
- DModal-API: Verwendung der DModal-API zum Rendern von Modal-Fenstern (auch Popups/Dialoge genannt) in Discourse
- JS-API: Verwendung der JS-API
- Plugin-Outlet-Konnektoren: Verwendung von Plugin-Outlet-Konnektoren aus einem Theme oder Plugin
- modifyClass: Verwendung von modifyClass zur Änderung des Kernverhaltens
- Erstellen von Routen: Erstellen von Routen in Discourse und Anzeigen von Daten
- Authentifizierungsmethode: Hinzufügen einer neuen „verwalteten“ Authentifizierungsmethode zu Discourse
- Versehentliche Serialisierung von ActiveRecord-Modellen: Verhinderung der versehentlichen Serialisierung von ActiveRecord-Modellen
- Überschreiben von Templates: (nicht empfohlen) Überschreiben von Discourse-Templates aus einem Theme oder Plugin
- Service-Objekte: Verwendung von Service-Objekten in Discourse
- System-Spezifikationen: Schreiben von End-to-End-System-Spezifikationen für die Discourse-Benutzeroberfläche
- FormKit: Discourse-Toolkit zum Rendern von Formularen
- AppEvents-Trigger: Referenz für AppEvents-Trigger
- Transformer: Verwendung von Transformer zur Anpassung von clientseitigen Werten und Verhalten
- Anpassung der Themenliste: Anpassung der Themenliste
- CSS-Richtlinien: Richtlinien für CSS-Klassen mit BEM
- JS-Typ-Hinting & Validierung: JavaScript-Typ-Hinting & Validierung (TypeScript)
- Design für Geräte: Design für verschiedene Geräte (Viewport-Größe, Touch/Hover usw.)
Plugins
- Basis-Plugin: Entwicklung von Discourse-Plugins – Teil 1 – Erstellen eines Basis-Plugins
- Plugin-Outlet: Entwicklung von Discourse-Plugins – Teil 2 – Verbindung zu einem Plugin-Outlet
- Site-Einstellungen: Entwicklung von Discourse-Plugins – Teil 3 – Hinzufügen benutzerdefinierter Site-Einstellungen
- Git-Setup: Entwicklung von Discourse-Plugins – Teil 4 – Einrichtung von Git
- Admin-Oberfläche: Entwicklung von Discourse-Plugins – Teil 5 – Hinzufügen einer Admin-Oberfläche
- Akzeptanztests: Entwicklung von Discourse-Plugins – Teil 6 – Hinzufügen von Akzeptanztests
- Plugin veröffentlichen: Entwicklung von Discourse-Plugins – Teil 7 – Veröffentlichen Ihres Plugins
- Neue Locales: Hinzufügen eines neuen Locales aus einem Plugin
- Chat-Integration: Hinzufügen eines neuen Anbieters zu discourse-chat-integration
- markdown-it-Erweiterung: Neupackung einer markdown-it-Erweiterung als Discourse-Plugin
- Rails-Autoloading: Strukturierung eines Plugins für Rails-Autoloading
Themes & Komponenten
- Entwicklung von Themes: Entwicklung von Discourse-Themes & Theme-Komponenten
- Schnellreferenz: Schnellreferenz für Theme-Entwickler
- Leitfaden für Designer: Leitfaden für Designer zum Einstieg in Themes in Discourse
- Theme Creator: Einstieg in Theme Creator und die Theme-CLI
- Theme-CLI: Installation der Discourse Theme-CLI-Konsole zum Erstellen von Themes
- Theme-Struktur: Struktur von Themes und Theme-Komponenten
- Mehrere JS-Dateien: Aufteilung des Theme-JavaScript in mehrere Dateien
- Mehrere SCSS-Dateien: Aufteilung des Theme-SCSS in mehrere Dateien
- Theme-Einstellungen: Hinzufügen von Einstellungen zu Ihrem Discourse-Theme
- Objekttyp für Theme-Einstellungen: Objekttyp für Theme-Einstellungen
- Migration von Einstellungen: Migration von Discourse-Theme-Einstellungen
- Theme-Metadaten: Hinzufügen von Metadaten und Screenshots zu einem Theme
- Kernvariablen: Verwendung von Discourse-Kernvariablen in Ihrem Theme
- Lokalisierbare Strings: Hinzufügen lokalisierbarer Strings zu Themes und Theme-Komponenten
- E2E-Tests: End-to-End-Systemtests für Themes und Theme-Komponenten
- Wartung minimieren: Minimierung des Wartungsaufwands für Theme-Anpassungen
- Schriftgrößen: Ändern der Schriftgrößen in Ihren Themes
- Assets einbinden: Einbinden von Assets (z. B. Bilder, Schriftarten) in Themes und Komponenten
- Benutzerdefinierte Icons: Ersetzen der Standard-SVG-Icons von Discourse durch benutzerdefinierte Icons in einem Theme
- Dunkler Modus: Aktualisierung von Themes und Plugins zur Unterstützung des automatischen dunklen Modus
- Theme-Modifikatoren: Theme-Modifikatoren: Eine kurze Einführung
- Pseudoelemente: Einfügen von Text oder Bildern an beliebiger Stelle auf Ihrer Website mit CSS-Pseudoelementen
- Schriftart-Komponente: Erstellen und Teilen einer Schriftart-Theme-Komponente
- Highlight.JS-Sprache: Installation einer neuen Sprache für Highlight.JS über eine Theme-Komponente
- Homepage-Inhalte: Hinzufügen benutzerdefinierter Inhalte, die nur auf Ihrer Homepage angezeigt werden
- Nachrichtenformat: Unterstützung des Nachrichtenformats für die Lokalisierung
- Globale Icon-Änderungen: Globales Ändern von Icons
- Alternative Icons: Alternative Icons
- Wiki-Post-Stil: Ändern des Stils eines Wiki-Posts
- Farbschema: Erstellen und Teilen eines Farbschemas
- Navigationsmenü: Verwendung des Abfrageparameters
navigation_menuzur Vorschau der Seitenleiste oder anderer Optionen - Post-Inhaltsstile: Anpassen des Inhalts von Beiträgen mit eigenen Stilen
- Theme-Screenshots: Hinzufügen von Vorschau-Screenshots zu Discourse-Themes
- Theme-anpassbare Site-Einstellungen: Steuerung von Site-Einstellungen mit Themes
Allgemeine Leitfäden
- White-Labeling mobiler Apps: Zu berücksichtigende Punkte, bevor Sie sich für das White-Labeling der Discourse-Mobile-Apps entscheiden
- Benutzerdefinierte Automatisierungen: Erstellen benutzerdefinierter Automatisierungen
- Öffentlicher Daten-Dump: Discourse Public Data Dump
- AI-Evals: Ausführen von Discourse AI-Evals
Theme-Entwickler-Tutorial
- 1 – Einführung: Theme-Entwickler-Tutorial: 1. Einführung
- 2 – Remote-Theme: Theme-Entwickler-Tutorial: 2. Erstellen eines Remote-Themes
- 3 – CSS: Theme-Entwickler-Tutorial: 3. CSS in Themes
- 4 – Outlets: Theme-Entwickler-Tutorial: 4. Verwendung von Outlets zum Einfügen und Ersetzen von Inhalten
- 5 – Komponenten: Theme-Entwickler-Tutorial: 5. Erstellen und Verwenden von Komponenten
- 6 – JS-API: Theme-Entwickler-Tutorial: 6. Verwendung der JS-API
- 7 – Abschluss: Theme-Entwickler-Tutorial: 7. Abschluss