Da Themen immer ehrgeiziger werden, suchen wir nach Möglichkeiten, ihnen zu erlauben, das Kernverhalten auf der Serverseite zu manipulieren. Obwohl sie niemals das gleiche Maß an 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.
Eine 100% aktuelle Liste der Modifikatoren finden Sie im Datenbankschema am Ende von theme_modifier_set.rb, aber hier ist eine kurze Zusammenfassung dessen, was wir bisher haben:
-
serialize_topic_excerptsboolean (Standard: false) - Schließt Auszüge immer ein, wenn Themenschleifen serialisiert werden -
csp_extensionsstring array - Fügt Direktiven zur CSP 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 Symbolen, 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, sodass Sie auf das Originalbild zurückfallen müssen, wenn Ihre angeforderte Größe nicht bereitgestellt wird. Weitere Informationen finden Sie in der Commit-Nachricht -
serialize_post_user_badgesstring array - eine Liste von Abzeichennamen (die Einträgen in derbadges-Tabelle entsprechen), die zusammen mit Beitragsdaten serialisiert werden sollen. Wenn konfiguriert, fügt das System die angegebenen Benutzerabzeichen jedem Beitrag für das Client-seitige Rendern 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 ihr Wert aus einer Theme-Einstellung gezogen wird, wodurch Website-Betreiber das Modifikatorverhalten überschreiben können, 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, um übereinzustimmen. Dies bietet Website-Betreibern Flexibilität, das Theme-Verhalten über die Admin-UI anzupassen.
Dieses Dokument ist versionskontrolliert – schlagen Sie Änderungen auf github vor.
