Da Themes immer ehrgeiziger werden, suchen wir nach Wegen, ihnen zu ermöglichen, das Kernverhalten auf der Serverseite zu manipulieren. Obwohl sie niemals die gleiche Kontrolle wie Plugins erhalten werden, können wir einige vordefinierte Hooks für Themes zur Manipulation bereitstellen.
Wir stellen vor: Theme-Modifikatoren ![]()
Sie werden mit dem Schlüssel modifiers in der about.json-Datei Ihres Themes angegeben.
Für eine 100% aktuelle Liste der Modifikatoren, überprüfen Sie das Datenbankschema am Ende von theme_modifier_set.rb, aber hier ist eine kurze Zusammenfassung dessen, was wir bisher haben:
-
serialize_topic_excerptsboolean (Standard: false) - fügt beim Serialisieren von Themenlisten immer Auszüge hinzu -
csp_extensionsstring array - fügt dem CSP Direktiven hinzu. Funktioniert genauso wie die alte Methode „extend_content_security_policy“ der Theme-Einstellung. Aber denken Sie daran, einfache\u003cscript src=\"\"\u003e-Tags werden automatisch erlaubt. -
svg_iconsstring array - eine Liste von Icons, die in den Icon-Subset aufgenommen werden sollen -
topic thumbnailsarray of dimensions - fordert zusätzliche Auflösungen im Topic-Thumbnail-Set an. Beachten Sie, dass diese asynchron generiert werden. Sie müssen also auf das Originalbild zurückfallen, falls Ihre angeforderte Größe nicht bereitgestellt wird. Weitere Informationen finden Sie in der Commit-Nachricht -
serialize_post_user_badgesstring array - eine Liste von Badges-Namen (die Einträgen in der Badges-Tabelle entsprechen), die zusammen mit den Post-Daten serialisiert werden sollen. Wenn konfiguriert, fügt das System die angegebenen Benutzer-Badges jedem Post für das Client-seitige Rendering hinzu.
Ein Theme, das diese neuen Hooks intensiv nutzt, ist Topic List Thumbnails – sehen Sie sich den Code an, um zu sehen, wie es funktioniert.
Einstellungsabhängige Modifikatoren
Theme-Modifikatoren können auch so konfiguriert werden, dass sie ihren Wert aus einer Theme-Einstellung ziehen. Dies ermöglicht es Site-Betreibern, das Modifikatorverhalten zu überschreiben, ohne den Code des Themes bearbeiten zu müssen. Um einen Modifikator von einer Einstellung abhängig zu machen, verwenden Sie diese Syntax in Ihrer about.json:
{
"modifiers": {
"modifier_name": {
"type": "setting",
"value": "setting_name"
}
}
}
Wenn Sie beispielsweise eine Theme-Einstellung namens show_excerpts haben und diese den Modifikator serialize_topic_excerpts steuern soll:
In settings.yml:
show_excerpts:
default: false
In about.json:
{
"modifiers": {
"serialize_topic_excerpts": {
"type": "setting",
"value": "show_excerpts"
}
}
}
Wenn die Einstellung show_excerpts geändert wird, aktualisiert sich der Modifikatorwert automatisch entsprechend. Dies bietet Site-Betreibern Flexibilität, das Theme-Verhalten über die Admin-UI anzupassen.
\u003csmall\u003eDieses Dokument wird versioniert – schlagen Sie Änderungen auf github vor.\u003c/small\u003e

