Abbiamo aggiunto un nuovo modo per gli sviluppatori di temi di controllare l’esperienza di un sito. Le impostazioni del sito “themeable” consentono ai temi di sovrascrivere un gruppo limitato di impostazioni del sito definite da Discourse core. ![]()
In cosa differiscono le impostazioni del sito “themeable”?
Abbiamo già concetti di impostazioni del tema e modificatori del tema, quindi in cosa differiscono le impostazioni del sito “themeable”? Ecco un breve riepilogo:
- Impostazioni del tema: queste sono impostazioni personalizzate utilizzate per controllare l’interfaccia utente e la funzionalità all’interno del tuo tema o componente e fornire opzioni di configurazione. Queste non possono modificare la funzionalità principale di Discourse.
- Modificatori del tema: consentono a un tema o a un componente di modificare funzionalità selezionate lato server di Discourse core come alternativa alla creazione di un plugin.
Impostazioni del sito “themeable” (nuovo): consentono a un tema (non ai componenti) di sovrascrivere un piccolo sottoinsieme delle impostazioni del sito core, che generalmente controllano parti dell’interfaccia utente e altre funzionalità minori. Ciò consente ai temi di avere un maggiore controllo sull’esperienza completa del sito.
Le impostazioni del sito “themeable” hanno tipi di dati e valori identici alle impostazioni del sito che sovrascrivono. A tutti gli effetti, il valore dell’impostazione del sito nel database diventa irrilevante, poiché ogni tema controlla ora questo valore individualmente.
Come possono gli amministratori visualizzare e modificare le impostazioni del sito “themeable”?
Gli amministratori possono visualizzare e modificare le impostazioni del sito “themeable” in due posti. Innanzitutto, in ogni singola pagina del tema è ora presente una sezione “Impostazioni che il tema può sovrascrivere”, come mostrato qui, sopra l’altra sezione che mostra le impostazioni del tema definite dal tema:
Il punto indica che il valore è stato modificato rispetto al valore predefinito dell’impostazione del sito. Premendo “reset” si cambierà il valore dell’impostazione del sito del tema per corrispondere al valore predefinito dell’impostazione del sito.
Il secondo posto in cui gli amministratori possono visualizzare queste impostazioni è una nuova pagina, /admin/config/theme-site-settings:
Da qui gli amministratori possono vedere tutte le impostazioni del sito “themeable”, qual è il valore predefinito dell’impostazione del sito e quali temi stanno sovrascrivendo questo valore. Passando il mouse sopra un nome del tema, l’interfaccia utente mostrerà il valore che questo tema ha impostato.
Cosa succederà alle mie modifiche esistenti alle impostazioni del sito?
Se hai modificato enable_welcome_banner o search_experience dai valori predefiniti sul tuo sito, migreremo automaticamente questi valori a ogni tema che hai installato sul tuo sito, quindi nulla cambierà nell’interfaccia utente per i tuoi membri.
Dove sono definite?
Le impostazioni del sito “themeable” sono definite nel file core config/site_settings.yml. Ogni impostazione del sito “themeable” ha l’opzione themeable: true definita.
Per ora, solo due impostazioni del sito sono “themeable”: enable_welcome_banner e search_experience, ma in futuro probabilmente renderemo più impostazioni del sito “themeable”.
Come possono gli autori dei temi controllare i valori predefiniti?
Gli autori dei temi possono definire le sovrascritture delle impostazioni del sito “themeable” nel file about.json sotto una chiave theme_site_settings come segue:
"theme_site_settings": {
"enable_welcome_banner": false
}
Qualsiasi valore qui verrà salvato nel database e associato al tema. Una volta salvato un valore, le modifiche a theme_site_settings nel file about.json quando un tema viene aggiornato non influenzeranno il valore attualmente salvato nel database, poiché non possiamo sapere se l’amministratore ha modificato l’impostazione nell’intervallo.
Quali sono le limitazioni delle impostazioni del sito “themeable”?
Le impostazioni del sito “themeable” sono realmente destinate solo a controllare elementi dell’interfaccia utente e, quando si recupera il loro valore, è necessario un ID del tema, quindi si applicano queste limitazioni:
- Le impostazioni del sito “themeable” non possono essere utilizzate nei job Sidekiq
- Le impostazioni del sito “themeable” non possono essere utilizzate nelle regole markdown
- Le impostazioni del sito “themeable” verranno memorizzate nella cache separatamente dalle impostazioni del sito client utilizzando l’ID del tema come chiave
- Le impostazioni del sito “themeable” sovrascriveranno le chiavi sul servizio
siteSettingssul client utilizzando il precaricatore dell’applicazione SiteSetting.client_settings_jsonnon includerà le impostazioni del sito “themeable”, invece puoi chiamareSiteSetting.theme_site_settings_jsoncon un ID tema
Come regola generale, le impostazioni del sito del tema saranno solo per impostazioni semplici che controllano parti dell’interfaccia utente, nulla lato server.

