L’utilizzo 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 seguendo le istruzioni seguenti.
I tag <script> e <script type='text/javascript'> regolari non sono interessati da questa modifica.
Cronologia
Queste sono stime approssimative, soggette a modifiche
-
Maggio 2025 - Abilitati i messaggi di deprecazione della console
-
Luglio 2025 - Banner di avviso per gli amministratori abilitati
-
Fine settembre 2025Marzo 2026 - Rimozione della funzionalità
Conversione di <script type='text/x-handlebars'>
I template introdotti con questo metodo devono essere spostati in file .hbs dedicati, oppure ristrutturati in file .gjs.
Per mantenere 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
Da marzo 2026, anche i file
.hbssono deprecati. Dopo aver effettuato questa conversione, passare alle istruzioni in Deprecating .hbs file extension in themes and plugins
Per creare connettori e componenti nel moderno formato .gjs, consultare questo capitolo del tutorial per gli 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 si sviluppa il tema tramite l’interfaccia del pannello di amministrazione, copiare il codice fuori dal <script>, e spostarlo nella scheda JS (dove è indicato // your code here).
Se si sviluppa il tema in locale, creare un nuovo file in
{theme}/javascripts/discourse/api-initializers/init-theme.js
quindi aggiungere questo wrapper e inserire il 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 tramite la sintassi require(). Sebbene questo funzioni ancora in un file .js, sarà presto deprecato, quindi ora sarebbe un buon momento per convertirlo in importazioni ES6 moderne. Per 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:


