Da Themes immer ambitionierter werden, haben wir nach Wegen gesucht, ihnen die Möglichkeit zu geben, das Kernverhalten auf der Serverseite zu manipulieren. Obwohl sie niemals die gleiche Kontrolle wie Plugins erhalten werden, können wir einige vordefinierte Hooks bereitstellen, die Themes manipulieren können.
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, siehe 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 sind automatisch erlaubt. -
svg_iconsString-Array - eine Liste von Icons, die in den Icon-Subset aufgenommen werden sollen -
topic thumbnailsArray von Dimensionen - fordert zusätzliche Auflösungen im Topic-Thumbnail-Set an. Beachten Sie, dass diese asynchron generiert werden. Sie müssen also auf das ursprüngliche Bild zurückgreifen, 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. Bei Konfiguration fügt das System die angegebenen Benutzer-Badges jedem Post für das Client-seitige Rendern hinzu.
Ein Theme, das diese neuen Hooks intensiv nutzt, ist Topic List Thumbnails – schauen 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 beziehen. 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

