Dokumentation zur Erweiterung von Discourse mit Plugins, Themes und Theme Components, 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: Discourse mit einem Dev Container entwickeln
- GitHub Codespaces: Discourse auf 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 Ihrer 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
- Linting und Formatierung: Code vor Commits automatisch linten und formatieren
- Akzeptanztests: Akzeptanztests und Komponententests für Ember-Code in Discourse schreiben
- Test-Suiten ausführen: Wie man Discourse Core-, Plugin- und Theme-QUnit-Test-Suiten ausführt
- Versionskompatibilität: Plugin- und Theme-Versionen für ältere Discourse-Installationen festlegen (.discourse-compatibility)
- Ember-Objektbesitz: Ember-Objektbesitz (getOwner, Service-Injections, etc.)
- JS-Performance: Googles ‘tachometer’ zur Messung von JS-Performance-Änderungen in Discourse verwenden
- CI mit GitHub Actions: Continuous Integration mit GitHub Actions einrichten
- Markdown-Erweiterungen: Leitfaden für Entwickler zu Markdown-Erweiterungen
- Modals konvertieren: 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-Connectors: Verwendung von Plugin-Outlet-Connectors von einem Theme oder Plugin
- modifyClass: Verwendung von modifyClass zur Änderung des Core-Verhaltens
- Routen erstellen: Routen in Discourse erstellen und Daten anzeigen
- Authentifizierungsmethode: Hinzufügen einer neuen ‘managed’ Authentifizierungsmethode zu Discourse
- Versehentliche Serialisierung von ActiveRecord-Modellen: Verhinderung der versehentlichen Serialisierung von ActiveRecord-Modellen
- Überschreiben von Templates: (nicht empfohlen) Überschreiben von Discourse-Templates von einem Theme oder Plugin
- Service-Objekte: Verwendung 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-Trigger: AppEvents-Trigger-Referenz
- Transformer: Verwendung von Transformern zur Anpassung von Client-seitigen Werten und Verhalten
- Topic List-Anpassung: 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, etc.)
- JS-Typ-Hinweise & Validierung: JavaScript Typ-Hinweise & Validierung (TypeScript)
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
- Site-Einstellungen: Entwicklung von Discourse-Plugins - Teil 3 - Benutzerdefinierte Site-Einstellungen hinzufügen
- Git-Setup: Entwicklung von Discourse-Plugins - Teil 4 - Git einrichten
- Admin-Oberfläche: Entwicklung von Discourse-Plugins - Teil 5 - Eine Admin-Oberfläche hinzufügen
- Akzeptanztests: Entwicklung von Discourse-Plugins - Teil 6 - Akzeptanztests hinzufügen
- Plugin veröffentlichen: Entwicklung von Discourse-Plugins - Teil 7 - Ihr Plugin veröffentlichen
- Neue Lokalisierungen: Eine neue Lokalisierung per Plugin hinzufügen
- Chat-Integration: Einen neuen Anbieter zu discourse-chat-integration hinzufügen
- markdown-it-Erweiterung: Eine markdown-it-Erweiterung als Discourse-Plugin neu verpacken
- Rails Autoloading: Strukturierung eines Plugins für Rails Autoloading
Themes & Komponenten
- Themes entwickeln: Entwicklung von Discourse Themes & Theme Components
- Kurzübersicht: Theme Developer Quick Reference Guide
- Designer-Leitfaden: Leitfaden für Designer zum Einstieg in Themes in Discourse
- Theme Creator: Erste Schritte mit Theme Creator und der Theme CLI
- Theme CLI: Installieren der Discourse Theme CLI Konsolenanwendung, um Ihnen beim Erstellen von Themes zu helfen
- Theme-Struktur: Struktur von Themes und Theme Components
- Mehrere JS-Dateien: Theme-Javascript in mehrere Dateien aufteilen
- Mehrere SCSS-Dateien: Theme-SCSS in mehrere Dateien aufteilen
- Theme-Einstellungen: Einstellungen zu Ihrem Discourse-Theme hinzufügen
- Objekte für Theme-Einstellungen: Objekttypen für Theme-Einstellungen
- Einstellungen migrieren: Discourse Theme-Einstellungen migrieren
- Theme-Metadaten: Metadaten und Screenshots zu einem Theme hinzufügen
- Core-Variablen: Verwendung von Discourse Core-Variablen in Ihrem Theme
- Lokalisierbare Strings: Lokalisierbare Strings zu Themes und Theme Components hinzufügen
- E2E-Tests: End-to-End-Systemtests für Themes und Theme Components
- Wartung minimieren: Wartung von Theme-Anpassungen minimieren
- Schriftgrößen: Schriftgrößen in Ihren Themes ändern
- Assets einbinden: Assets (z.B. Bilder, Schriftarten) in Themes und Komponenten einbinden
- Benutzerdefinierte Icons: Die Standard-SVG-Icons von Discourse durch benutzerdefinierte Icons in einem Theme ersetzen
- Dark Mode: Themes und Plugins aktualisieren, um automatischen Dark Mode zu unterstützen
- Theme-Modifikatoren: Theme Modifikatoren: Eine kurze Einführung
- Pseudo-Elemente: Text oder Bilder überall auf Ihrer Seite mit CSS-Pseudo-Elementen einfügen
- Font-Komponente: Eine Schriftart-Theme-Komponente erstellen und teilen
- Highlight.JS Sprache: Eine neue Sprache für Highlight.JS über eine Theme Component installieren
- Homepage-Inhalt: Benutzerdefinierten Inhalt hinzufügen, der nur auf Ihrer Homepage angezeigt wird
- Nachrichtenformat: Unterstützung für das Nachrichtenformat zur Lokalisierung
- Globale Icon-Änderungen: Icons global ändern
- Alternative Icons: Alternative Icons
- Wiki-Post-Stil: Den Stil eines Wiki-Posts ändern
- Farbschema: Ein Farbschema erstellen und teilen
- Navigationsmenü: Den Query-Parameter
navigation_menuverwenden, um die Seitenleiste oder andere Optionen in der Vorschau anzuzeigen - Post-Inhaltsstile: Beitrag-Inhalte mit eigenen Stilen anpassen
- Theme-Screenshots: Vorschaubilder zu Discourse Themes hinzufügen
- Theme-fähige Site-Einstellungen: Steuerung von Site-Einstellungen mit Themes
Allgemeine Anleitungen
- White-Labeling mobiler Apps: Dinge, die Sie beachten sollten, bevor Sie sich für das White-Labeling der Discourse Mobile Apps entscheiden
- Benutzerdefinierte Automatisierungen: Benutzerdefinierte Automatisierungen erstellen
- Öffentlicher Datenexport: Discourse Öffentlicher Datenexport
- AI-Evaluierungen: Discourse AI-Evaluierungen ausführen
Theme Dev Tutorial
- 1 - Einführung: Theme Developer Tutorial: 1. Einführung
- 2 - Remote Theme: Theme Developer Tutorial: 2. Erstellen eines Remote-Themes
- 3 - CSS: Theme Developer Tutorial: 3. CSS in Themes
- 4 - Outlets: Theme Developer Tutorial: 4. Verwenden von Outlets zum Einfügen und Ersetzen von Inhalten
- 5 - Komponenten: Theme Developer Tutorial: 5. Erstellen und Verwenden von Komponenten
- 6 - JS API: Theme Developer Tutorial: 6. Verwenden der JS API
- 7 - Abschluss: Theme Developer Tutorial: 7. Abschluss