Man mano che i temi diventano più ambiziosi, abbiamo cercato modi per consentire loro di manipolare il comportamento centrale lato server. Sebbene non otterranno mai lo stesso livello di controllo dei plugin, possiamo fornire alcuni ganci predefiniti per la manipolazione dei temi.
Introduzione: modificatori di tema ![]()
Sono specificati utilizzando la chiave modifiers nel file about.json del tema.
Per un elenco aggiornato al 100% dei modificatori, controlla lo schema del database in fondo a theme_modifier_set.rb, ma ecco un rapido riepilogo di ciò che abbiamo finora:
-
serialize_topic_excerptsbooleano (predefinito falso) - includi sempre gli estratti quando serializzi gli elenchi di argomenti -
csp_extensionsarray di stringhe - aggiunge direttive alla CSP. Funziona allo stesso modo del vecchio metodo di impostazione del tema “extend_content_security_policy”. Ma ricorda, i tag\u003cscript src=\"\"\u003esemplici sono consentiti automaticamente. -
svg_iconsarray di stringhe - un elenco di icone che dovrebbero essere incluse nel sottoinsieme di icone -
topic thumbnailsarray di dimensioni - richiedi risoluzioni aggiuntive nell’insieme di miniature degli argomenti. Nota che vengono generate in modo asincrono, quindi devi tornare all’immagine originale se la dimensione richiesta non è fornita. Maggiori informazioni disponibili nel messaggio di commit -
serialize_post_user_badgesarray di stringhe - un elenco di nomi di badge (corrispondenti alle voci nella tabella dei badge) da serializzare insieme ai dati dei post. Quando configurato, il sistema include i badge utente specificati con ogni post per il rendering lato client.
Un tema che fa ampio uso di questi nuovi ganci è Topic List Thumbnails - dai un’occhiata al codice per vedere come funziona.
Modificatori dipendenti dalle impostazioni
I modificatori del tema possono anche essere configurati per ottenere il loro valore da un’impostazione del tema, consentendo agli operatori del sito di sovrascrivere il comportamento del modificatore senza modificare il codice del tema. Per rendere un modificatore dipendente da un’impostazione, usa questa sintassi nel tuo about.json:
{
"modifiers": {
"modifier_name": {
"type": "setting",
"value": "setting_name"
}
}
}
Ad esempio, se hai un’impostazione del tema chiamata show_excerpts e vuoi che controlli il modificatore serialize_topic_excerpts:
In settings.yml:
show_excerpts:
default: false
In about.json:
{
"modifiers": {
"serialize_topic_excerpts": {
"type": "setting",
"value": "show_excerpts"
}
}
}
Quando l’impostazione show_excerpts viene modificata, il valore del modificatore si aggiornerà automaticamente per corrispondere. Ciò fornisce flessibilità agli operatori del sito per personalizzare il comportamento del tema tramite l’interfaccia utente di amministrazione.
Questo documento è controllato in versione - suggerisci modifiche su github.
