Im Rahmen unseres kontinuierlichen Bestrebens, die Rendering-Systeme in der gesamten Codebasis von Discourse zu standardisieren, ersetzen wir die Implementierung der Topic-Liste.
Zuvor wurde hierfür ein Ansatz mit „rohem Handlebars“ (.hbr) verwendet, der über Template-Overrides und Raw-Plugin-Outlets angepasst werden konnte. Die neue Implementierung der Topic-Liste verwendet moderne Glimmer-Komponenten und wurde von Grund auf so aufgebaut, dass sie auf nachhaltige Weise angepasst werden kann.
Die neue Implementierung ist nun hinter der Einstellung glimmer_topic_list_mode verfügbar.
disabled: Verwendet die Legacy-Topic-Liste „rohes Handlebars“.auto: Erkennt die Kompatibilität Ihrer aktuellen Plugins und Themes. Wenn eines davon inkompatibel ist, wird das Legacy-System verwendet; andernfalls wird die neue Implementierung verwendet.enabled: Verwendet die neue Topic-Listen-Implementierung. Wenn Sie inkompatible Plugins oder Themes haben, kann Ihre Website beschädigt werden.
Wir haben die meisten unserer offiziellen Themes und Plugins bereits aktualisiert, um sie mit dem neuen Menü kompatibel zu machen. Wenn Sie jedoch Drittanbieter-Plugins, Themes oder Theme-Komponenten verwenden, die die Topic-Liste anpassen, müssen diese aktualisiert werden.
Warnungen werden in der Browserkonsole ausgegeben, die die Quelle der Inkompatibilität identifizieren.
Zeitplan für die Einführung
Dies sind grobe Schätzungen, die sich ändern können
Q4 2024:
Kernimplementierung abgeschlossen
Aktualisierung offizieller Themes/Plugins (in Arbeit)
Aktiviert auf Meta
Upgrade-Ratschläge veröffentlicht
Q1 2025:
-
Aktualisierung offizieller Themes/Plugins -
glimmer_topic_list_modestandardmäßig aufautogesetzt; Konsolen-Deprecations-Nachrichten aktiviert -
Deprecations lösen ein Admin-Warnbanner für verbleibende Probleme aus -
Drittanbieter-Plugins und Themes sollten aktualisiert werden
-
1. März – Aktivierung der neuen Topic-Liste für alle Websites. Der Standardwert für die Website-Einstellung wird auf enabledumgestellt, es wird jedoch weiterhin möglich sein, auf „disabled“ zurückzuschalten.
Q2 2025
nach dem 1. April – endgültige Entfernung des Legacy-Modus und des zugehörigen Codes
Was bedeutet das für mich?
Wenn Ihr Plugin oder Theme „rohe Handlebars“-Dateien enthält (benannt .hbr oder .raw.hbs), müssen diese für die Kompatibilität mit der neuen Version aktualisiert werden. Reguläre .hbs-Dateien für Ember-Komponenten/Routen sind von dieser Änderung nicht betroffen.
Upgrades sind auch erforderlich, wenn Sie modifyClass für component:topic-list oder component:topic-list-item verwenden.
Wenn Ihre Website solche inkompatiblen Anpassungen aufweist, werden Warnmeldungen in der Entwicklerkonsole des Browsers ausgegeben, die Informationen darüber enthalten, welches Theme/Plugin die Ursache ist.
Was sind die Ersetzungen?
Einige der alten Raw-Plugin-Outlets wurden in reguläre Plugin-Outlets konvertiert. Diese können 1:1 aktualisiert werden.
Fortgeschrittenere Anpassungen müssen von Fall zu Fall bewertet werden. Die neue Topic-Liste verfügt über eine Reihe neuer APIs für einfache und robuste Anpassungen. Weitere Informationen finden Sie hier:
Hier sind einige Beispiele:
-
discourse-assignführt eine neue Spalte zu einer bestimmten Topic-Liste hinzu -
discourse-calendarverwendet eines der neuen Plugin-Outlets, um die Event-Datumsanzeige anzuzeigen -
discourse-solvedverwendet einen neuenvalueTransformer, um das vorherigemodifyClasszu ersetzen
Was ist mit anderen Anpassungen?
Wenn Ihre Anpassung nicht mit den von uns eingeführten neuen APIs erreicht werden kann, teilen Sie uns dies bitte mit, indem Sie ein neues #dev-Thema zur Diskussion erstellen.
Ich bin ein Plugin-/Theme-Autor. Wie aktualisiere ich ein Theme/Plugin, um während des Übergangs sowohl die alte als auch die neue Topic-Liste zu unterstützen?
Die neuen Plugin-Outlets werden sowohl in der alten als auch in der neuen Implementierung der Topic-Liste gerendert. Wenn Sie also die neue implementiert haben, löschen Sie einfach den alten Raw-Plugin-Outlet-Connector.
Für DAG-basierte Anpassungen, die Template-Overrides oder nicht modernisierte Outlets ersetzen, müssen Sie während der Übergangszeit beide Implementierungen beibehalten.
Sobald Ihr Theme/Plugin sowohl die alte als auch die neue Implementierung unterstützt, können Sie diesen magischen Kommentar am Anfang aller Ihrer .hbr-Dateien hinzufügen:
{{!-- has-modern-replacement --}}
Dadurch werden die Deprecations-Nachrichten unterdrückt und die neue Implementierung kann im „auto“-Modus verwendet werden.


