L’uso di <script type='text/discourse-plugin'> o <script type='text/x-handlebars'> nei temi è ora deprecato. Qualsiasi uso di questi tag nei temi dovrebbe essere aggiornato secondo le istruzioni seguenti.
Gli <script> regolari e <script type='text/javascript'> non sono interessati da questa modifica.
Tempistiche
Queste sono stime approssimative, soggette a modifiche
-
Maggio 2025 - abilitati messaggi di deprecazione nella console
-
Luglio 2025 - abilitati banner di avviso per gli amministratori
-
Fine Settembre 2025 - rimozione della funzionalità
Conversione di <script type='text/x-handlebars'>
I template introdotti con questo metodo dovrebbero essere spostati in file .hbs dedicati, o rifattorizzati in file gjs.
Per mantenere come HBS, i template dei connettori possono essere inseriti in:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
e i template dei componenti possono essere inseriti in:
{theme}/javascripts/discourse/components/{component-name}.hbs
Per creare connettori e componenti nel formato moderno .gjs, consulta questo capitolo del tutorial per sviluppatori di temi:
Conversione di <script type='text/discourse-plugin'>
Il codice all’interno di questi tag può essere migrato in un file JavaScript dedicato.
Se sviluppi il tuo tema tramite l’interfaccia del pannello di amministrazione, copia il codice fuori dallo <script>, e spostalo nella scheda JS (dove dice // your code here).
Se sviluppi il tuo tema localmente, crea un nuovo file in
{theme}/javascripts/discourse/api-initializers/init-theme.js
quindi aggiungi questo wrapper, e inserisci il tuo codice nel punto indicato:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Your code here
});
Nei tag script, l’unico modo per importare altri moduli JS era usando la sintassi require(). Sebbene questo funzioni ancora in un file .js, sarà presto deprecato, quindi questo sarebbe un buon momento per convertirlo agli import ES6 moderni. Ad esempio:
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
Per maggiori informazioni sugli inizializzatori JS:


