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: Discourse mit einem Dev Container entwickeln
- GitHub Codespaces: Discourse in GitHub Codespaces entwickeln
- Docker-Setup: Discourse für die Entwicklung mit Docker installieren
- macOS-Setup: Discourse auf macOS für die Entwicklung installieren
- Ubuntu/Debian-Setup: Discourse auf Ubuntu oder Debian für die Entwicklung installieren
- Windows-Setup: Discourse auf Windows für die Entwicklung installieren
- Nicht-Docker-Plugins: Plugins in deiner Nicht-Docker-Entwicklungsumgebung installieren
- Lokales Setup: Eine lokale Discourse-Entwicklungsumgebung einrichten?
- Multisite-Setup: Eine Multisite-Entwicklungsumgebung einrichten
- Fedora-Setup: Discourse für die Entwicklung auf Fedora Linux einrichten
Code & Interna
- Ember-Komponenten: Ember-Komponenten zu Discourse hinzufügen
- UI-Kit: Das UI-Kit mit geteilten Discourse-Komponenten, Helpers und Modifiern
- Lint und Formatierung: Code vor Commits automatisch linten und formatieren
- Akzeptanztests: Akzeptanztests und Komponententests für Ember-Code in Discourse schreiben
- Test-Suiten ausführen: So führt man die QUnit-Test-Suiten für Discourse-Kern, Plugins und Themes aus
- Versionskompatibilität: Versionsfestlegung von Plugins und Themes für ältere Discourse-Installationen (d-compat-Branches)
- Ember-Objekteigentum: Ember-Objekteigentum (getOwner, Service-Injektionen usw.)
- JS-Leistung: Nutzung von Googles „tachometer“ zur Messung von JS-Leistungsänderungen in Discourse
- CI mit GitHub Actions: Continuous Integration mit GitHub Actions einrichten
- Markdown-Erweiterungen: Entwicklerhandbuch zu Markdown-Erweiterungen
- Modals konvertieren: Konvertierung von Modals von Legacy-Controllern zur neuen DModal-Komponenten-API
- DModal-API: Nutzung der DModal-API zum Rendern von Modal-Fenstern (auch bekannt als Popups/Dialoge) in Discourse
- JS-API: Nutzung der JS-API
- Plugin-Outlet-Connectors: Nutzung von Plugin-Outlet-Connectors aus einem Theme oder Plugin
- modifyClass: Nutzung von modifyClass zur Änderung des Kernverhaltens
- Routen erstellen: Routen in Discourse erstellen und Daten anzeigen
- Authentifizierungsmethode: Hinzufügen einer neuen „verwalteten“ Authentifizierungsmethode zu Discourse
- Unbeabsichtigte Serialisierung von ActiveRecord-Modellen: Verhinderung der unbeabsichtigten Serialisierung von ActiveRecord-Modellen
- Vorlagen überschreiben: (nicht empfohlen) Überschreiben von Discourse-Vorlagen aus einem Theme oder Plugin
- Service-Objekte: Nutzung von Service-Objekten in Discourse
- System-Specs: End-to-End-System-Specs für die Discourse-Benutzeroberfläche schreiben
- FormKit: Discourse-Toolkit zum Rendern von Formularen.
- AppEvents-Triggers: AppEvents-Triggers-Referenz
- Transformers: Nutzung von Transformers zur Anpassung von Client-Seiten-Werten und -Verhalten
- Themenlisten-Anpassung: Anpassung der Themenliste
- CSS-Richtlinien: Richtlinien für CSS-Klassen unter Verwendung von BEM
- JS-Type-Hinting & Validierung: JavaScript-Type-Hinting & Validierung (typescript)
- Design für Geräte: Design für verschiedene Geräte (Touch & Hover)
- Design für responsive Breiten: Design für responsive Breiten (Breakpoints, Viewport & Container)
- Gesten-Primitiven: Drag, Resize und Gesten-Primitiven
- Bundle-Splitting: Bundle-Splitting für Plugins
Plugins
- Basis-Plugin: Entwicklung von Discourse-Plugins - Teil 1 - Ein Basis-Plugin erstellen
- Plugin-Outlet: Entwicklung von Discourse-Plugins - Teil 2 - Verbindung zu einem Plugin-Outlet
- Seiteneinstellungen: Entwicklung von Discourse-Plugins - Teil 3 - Hinzufügen benutzerdefinierter Seiteneinstellungen
- Git-Setup: Entwicklung von Discourse-Plugins - Teil 4 - Git einrichten
- 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 - Dein Plugin veröffentlichen
- Neue Locales: Ein neues Locale aus einem Plugin hinzufügen
- Chat-Integration: Einen neuen Anbieter zu discourse-chat-integration hinzufügen
- markdown-it-Erweiterung: Neupaketierung einer markdown-it-Erweiterung als Discourse-Plugin
- Rails-Autoloading: Strukturierung eines Plugins für Rails-Autoloading
Themes & Komponenten
- Theme-Entwicklung: Entwicklung von Discourse-Themes & Theme-Komponenten
- Schnellreferenz: Schnellreferenzhandbuch für Theme-Entwickler
- Designer-Guide: Designer-Guide zum Einstieg in Themes in Discourse
- Theme Creator: Einstieg in Theme Creator und die Theme-CLI
- Theme-CLI: Installation der Discourse-Theme-CLI-Konsole zur Unterstützung beim Theme-Bau
- Theme-Struktur: Struktur von Themes und Theme-Komponenten
- Mehrere JS-Dateien: Theme-JavaScript in mehrere Dateien aufteilen
- Mehrere SCSS-Dateien: Theme-SCSS in mehrere Dateien aufteilen
- Theme-Einstellungen: Einstellungen zu deinem Discourse-Theme hinzufügen
- Objekte für Theme-Einstellungen: Objekttyp für Theme-Einstellungen
- Einstellungen migrieren: Discourse-Theme-Einstellungen migrieren
- Theme-Metadaten: Hinzufügen von Metadaten und Screenshots zu einem Theme
- Kernvariablen: Nutzung von Discourse-Kernvariablen in deinem Theme
- Lokalisierbare Zeichenfolgen: Hinzufügen lokalisierbarer Zeichenfolgen zu Themes und Theme-Komponenten
- E2E-Tests: End-to-End-Systemtests für Themes und Theme-Komponenten
- Wartung minimieren: Wartungsaufwand für Theme-Anpassungen minimieren
- Schriftgrößen: Schriftgrößen in deinen Themes ändern
- Assets einbinden: Assets (z. B. Bilder, Schriftarten) in Themes und Komponenten einbinden
- Benutzerdefinierte Icons: Standard-SVG-Icons von Discourse durch benutzerdefinierte Icons in einem Theme ersetzen
- Dunkler Modus: Themes und Plugins aktualisieren, um den automatischen dunklen Modus zu unterstützen
- Theme-Modifiern: Theme-Modifiern: Eine kurze Einführung
- Pseudoelemente: Text oder Bilder überall auf deiner Seite mit CSS-Pseudoelementen einfügen
- Schriftart-Komponente: Eine Schriftart-Theme-Komponente erstellen und teilen
- Highlight.JS-Sprache: Eine neue Sprache für Highlight.JS über eine Theme-Komponente installieren
- Homepage-Inhalte: Benutzerdefinierte Inhalte hinzufügen, die nur auf deiner Startseite erscheinen
- Nachrichtenformat: Message-Format-Unterstützung für Lokalisierung
- Globale Icon-Änderungen: Icons global ändern
- Alternative Icons: Alternative Icons
- Wiki-Beitragsstil: Den Stil eines Wiki-Beitrags ändern
- Farbschema: Ein Farbschema erstellen und teilen
- Navigationsmenü: Den Abfrageparameter
navigation_menuverwenden, um die Seitenleiste oder andere Optionen voranzuschauen - Beitragsinhaltsstile: Beitragsinhalte mit eigenen Stilen anpassen
- Theme-Screenshots: Vorschau-Screenshots zu Discourse-Themes hinzufügen
- Theme-fähige Seiteneinstellungen: Seiteneinstellungen mit Themes steuern
Allgemeine Anleitungen
- White-Labeling mobiler Apps: Überlegungen vor der Entscheidung, die Discourse-Mobil-Apps zu white-labeln
- Benutzerdefinierte Automationen: Benutzerdefinierte Automationen erstellen
- Öffentlicher Daten-Dump: Discourse Public Data Dump
- KI-Evals: Discourse-KI-Evals ausführen
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 - Schluss: Theme-Entwickler-Tutorial: 7. Zusammenfassung