Wir haben gerade eine zweite Iteration unseres Theme-Neubaus veröffentlicht. Während das erste Update ein visuelles Refresh war, das auf dem vorherigen Meta Branded Theme aufbaute, ist diese Version im Wesentlichen ein völlig neues Theme, das von Grund auf neu entwickelt wurde. Die neue Markenidentität wurde bereits mit dem vorherigen Release eingeführt, sodass es auf dieser Ebene nicht allzu viele sichtbare Änderungen gibt. Was sich mit diesem Update jedoch erheblich geändert hat, ist die Implementierung des Themes selbst sowie der Einblick, den sie in unsere zukünftige Richtung bei der Anpassung von Discourse im Allgemeinen gibt.
Ich werde einige Implementierungsdetails durchgehen, beginnend mit den kleineren Punkten:
Lucide Icons
Lucide ist ein Open-Source-Paket moderner Strich-Icons, das wir bereits in mehreren Anpassungsprojekten eingeführt haben. Mit dieser Iteration haben wir es auch in das Meta Branded Theme integriert. Es sind keine Pläne vorhanden, Font Awesome im Discourse-Kern zu ersetzen, doch die kostenlose Version von Font Awesome bietet nur eine begrenzte Auswahl an Strich-Icons, die nicht ausreicht, um ein kohärentes Strich-Icon-System zu bilden. Das Theme-Komponenten-Paket ist unter github.com/discourse/discourse-lucide-icons verfügbar.
Theme-Modifikator zur Einschränkung von Farbpaletten
Wir haben einen neuen Theme-Modifikator namens only_theme_color_schemes hinzugefügt, der festlegt, welche Farbpaletten für ein bestimmtes Theme verfügbar sind – sowohl für Administratoren als auch für Benutzer in ihren Oberflächeneinstellungen. Meta verfügt über mehrere benutzerwählbare Paletten, die im Widerspruch zur visuellen Identität des Meta Branded Themes stehen könnten. Mit diesem Modifikator werden nur die mit dem Theme gebündelten Paletten als Optionen angeboten.
PR: FEATURE: add modifier to restrict theme color schemes
Vollbreiten-Layout
Wir testen zudem einige Anpassungen am Discourse Full-width-Komponente, um den Hauptinhalt der Seite besser zu zentrieren. Da der Header viele dynamische Elemente enthält, ist die Einrichtung komplex. Bisher ist dies experimentell und nur in einem Branch der Komponente verfügbar.
Werttransformator zur Steuerung der Sichtbarkeit des Willkommensbanners
Wir haben einen neuen Werttransformator namens welcome-banner-display-for-route verwendet, um programmatisch festzulegen, auf welchen Routen das Kern-Willkommensbanner angezeigt wird. Damit stellen wir sicher, dass das Banner nur auf der standardmäßigen benutzerdefinierten Startseite erscheint und nicht auf Seiten, die ein Benutzer als persönliche Startseite festgelegt haben könnte.
PR: DEV: Add welcome-banner-display-for-route value transformer
Das bringt uns zu den beiden größeren Änderungen:
Benutzerdefinierte Startseite über Theme-Modifikator
Der Theme-Modifikator custom_homepage ist seit fast zwei Jahren verfügbar, doch dies ist das erste Mal, dass wir ihn nutzen, um die Startseite-Erfahrung auf Meta selbst zu gestalten. Wir führen eine benutzerdefinierte Landingpage ein, die mit hervorgehobenen Komponenten gefüllt ist. Für den ersten Launch umfasst dies hervorgehobene Kategorien sowie eine Vorschau der neuesten Diskussionsthemen.
Diese hervorgehobenen Komponenten haben wir mit unserer neuen experimentellen Blocks-API erstellt, was uns zur größten Änderung führt:
Blocks-API: Erste Produktionseinsatz
Die Blocks-API ist ein neues Framework zum Erstellen modularer, kombinierbarer Layouts in Discourse. Es ermöglicht Theme-Entwicklern, Seiten aus selbstständigen, wiederverwendbaren Komponenten zusammenzustellen, die in definierten Layoutbereichen platziert werden können. Das Meta-Theme ist unsere erste Produktionseinsatz dieses Frameworks.
Das Framework bietet eine umfangreiche Palette an Entwicklerwerkzeugen: Aktivieren Sie die Entwickler-Tools, und Sie können die Block-Struktur jeder Seite mit einer integrierten Overlay-Ansicht inspizieren, die alle aktiven Layoutbereiche und ihre Komponenten visualisiert.
Neben der Startseite nutzen wir Blocks auch, um benutzerdefinierte Kategorie-Banner zu rendern, die die Unterkategorien jeder Kategorie anzeigen:
Dies ist noch eine frühe Vorschau des Systems im Produktionskontext. Wir planen, in Kürze Dokumentation und weitere Beispiele zu veröffentlichen.
PR: DEV: Add Block API for declarative, validated UI extension points






