Con l’aumentare dell’ambizione dei temi, abbiamo cercato modi per consentire loro di manipolare il comportamento fondamentale del server-side. Sebbene non otterranno mai lo stesso livello di controllo dei plugin, possiamo fornire alcuni hook predefiniti che i temi possono manipolare.
Presentazione: 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 breve riepilogo di ciò che abbiamo finora:
-
serialize_topic_excerptsboolean (default false) - includi sempre gli estratti quando serializzi gli elenchi di argomenti -
csp_extensionsarray di stringhe - aggiungi 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 nel set di miniature degli argomenti. Nota che vengono generate in modo asincrono, quindi devi ricorrere 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 (che corrispondono 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 un uso intensivo di questi nuovi hook è Topic List Thumbnails - controlla il codice per vedere come funziona.
Modificatori dipendenti dalle impostazioni
I modificatori di tema possono anche essere configurati per prelevare 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.

