Wir haben eine neue Möglichkeit für Theme-Entwickler hinzugefügt, die Erfahrung einer Website zu steuern. Theme-fähige Website-Einstellungen ermöglichen es Themes, eine begrenzte Gruppe von Website-Einstellungen zu überschreiben, die von Discourse-Core definiert werden. ![]()
Wie unterscheiden sich Theme-fähige Website-Einstellungen?
Wir haben bereits Konzepte von Theme-Einstellungen und Theme-Modifikatoren, also wie unterscheiden sich Theme-fähige Website-Einstellungen? Hier ist eine kurze Zusammenfassung:
- Theme-Einstellungen – Dies sind benutzerdefinierte Einstellungen, die zur Steuerung von Benutzeroberfläche und Funktionalität innerhalb Ihres Themes oder Komponenten verwendet werden und Konfigurationsoptionen bieten. Diese können die Kernfunktionalität von Discourse nicht ändern.
- Theme-Modifikatoren – Ermöglicht einem Theme oder einer Komponente, ausgewählte serverseitige Funktionalitäten von Discourse-Core zu modifizieren, als Alternative zur Erstellung eines Plugins.
Theme-fähige Website-Einstellungen (neu) – Ermöglicht einem Theme (nicht Komponenten), eine kleine Teilmenge von Kern-Website-Einstellungen zu überschreiben, die im Allgemeinen Teile der Benutzeroberfläche und andere kleinere Funktionalitäten steuern. Dies ermöglicht Themes, mehr Kontrolle über das gesamte Website-Erlebnis zu haben.
Theme-fähige Website-Einstellungen haben identische Datentypen und Werte wie die Website-Einstellungen, die sie überschreiben. Für alle Zwecke ist der Wert der Website-Einstellung in der Datenbank irrelevant, da jedes Theme diesen Wert jetzt individuell steuert.
Wie können Administratoren Theme-fähige Website-Einstellungen anzeigen und ändern?
Administratoren können Theme-fähige Website-Einstellungen an zwei Stellen anzeigen und ändern. Erstens gibt es auf jeder einzelnen Theme-Seite nun einen Abschnitt „Einstellungen, die das Theme überschreiben kann“ wie hier gezeigt, oberhalb des anderen Abschnitts, der von Theme definierte Theme-Einstellungen anzeigt:
Der Punkt zeigt an, dass der Wert vom Standardwert der Website-Einstellung geändert wurde. Durch Drücken von „Zurücksetzen“ wird der Wert der Theme-Website-Einstellung auf den Standardwert der Website-Einstellung zurückgesetzt.
Der zweite Ort, an dem Administratoren diese Einstellungen anzeigen können, ist eine neue Seite unter /admin/config/theme-site-settings:
Von hier aus können Administratoren alle Theme-fähigen Website-Einstellungen, den Standardwert der Website-Einstellung und die Themes, die diesen Wert überschreiben, sehen. Wenn Sie mit der Maus über einen Theme-Namen fahren, zeigt die Benutzeroberfläche den von diesem Theme gesetzten Wert an.
Was passiert mit meinen bestehenden Änderungen an den Website-Einstellungen?
Wenn Sie enable_welcome_banner oder search_experience von den Standardwerten auf Ihrer Website geändert haben, werden wir diese Werte automatisch auf jedes auf Ihrer Website installierte Theme migrieren, sodass sich für Ihre Mitglieder in der Benutzeroberfläche nichts ändert.
Wo sind sie definiert?
Theme-fähige Website-Einstellungen werden in der Kern-Datei config/site_settings.yml definiert. Jede Theme-fähige Website-Einstellung hat die Option themeable: true definiert.
Vorerst sind nur zwei Website-Einstellungen Theme-fähig – enable_welcome_banner und search_experience – aber in Zukunft werden wir wahrscheinlich weitere Website-Einstellungen Theme-fähig machen.
Wie können Theme-Autoren Standardwerte steuern?
Theme-Autoren können Theme-Website-Einstellungsüberschreibungen in der Datei about.json unter einem Schlüssel theme_site_settings wie folgt definieren:
"theme_site_settings": {
"enable_welcome_banner": false
}
Jeder Wert hier wird in der Datenbank gespeichert und dem Theme zugeordnet. Sobald ein Wert gespeichert wurde, wirken sich Änderungen an den theme_site_settings in der Datei about.json bei einem Theme-Update nicht auf den aktuell gespeicherten Datenbankwert aus, da wir nicht wissen können, ob der Administrator die Einstellung in der Zwischenzeit geändert hat.
Was sind die Einschränkungen von Theme-fähigen Website-Einstellungen?
Theme-fähige Website-Einstellungen sind nur wirklich dazu gedacht, Elemente der Benutzeroberfläche zu steuern, und wenn ihr Wert abgerufen wird, benötigen wir eine Theme-ID. Daher gelten diese Einschränkungen:
- Theme-fähige Website-Einstellungen können nicht in Sidekiq-Jobs verwendet werden
- Theme-fähige Website-Einstellungen können nicht in Markdown-Regeln verwendet werden
- Theme-fähige Website-Einstellungen werden separat von Client-Website-Einstellungen mit der Theme-ID als Schlüssel zwischengespeichert
- Theme-fähige Website-Einstellungen überschreiben Schlüssel im
siteSettings-Dienst auf dem Client mithilfe des Application Preloaders SiteSetting.client_settings_jsonenthält keine Theme-fähigen Website-Einstellungen. Stattdessen können SieSiteSetting.theme_site_settings_jsonmit einer Theme-ID aufrufen.
Als allgemeine Regel gilt, dass Theme-Website-Einstellungen nur für einfache Einstellungen gelten, die Teile der Benutzeroberfläche steuern, nichts Serverseitiges.

