Usar \u003cscript type='text/discourse-plugin\u003e o \u003cscript type='text/x-handlebars'\u003e en temas ahora está obsoleto. Cualquier uso de estas etiquetas en temas debe actualizarse según las instrucciones a continuación.
Los \u003cscript\u003e y \u003cscript type='text/javascript'\u003e normales no se ven afectados por este cambio.
Cronograma
Estas son estimaciones aproximadas, sujetas a cambios
-
Mayo de 2025: Habilitación de mensajes de advertencia en la consola.
-
Julio de 2025: Habilitación de banners de advertencia para administradores.
-
Finales de septiembre de 2025: Eliminación de la función.
Conversión de \u003cscript type='text/x-handlebars'\u003e
Las plantillas introducidas con este método deben trasladarse a archivos .hbs dedicados o refactorizarse en archivos .gjs.
Para mantener como HBS, las plantillas de conexión se pueden colocar en:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
y las plantillas de componentes se pueden colocar en:
{theme}/javascripts/discourse/components/{component-name}.hbs
Para crear conectores y componentes en el formato moderno .gjs, consulta este capítulo del tutorial para desarrolladores de temas:
Conversión de \u003cscript type='text/discourse-plugin'\u003e
El código dentro de estas etiquetas se puede migrar a un archivo JavaScript dedicado.
Si desarrollas tu tema a través de la interfaz del panel de administración, copia el código de la etiqueta \u003cscript\u003e y muévelo a la pestaña JS (donde dice // your code here).
Si desarrollas tu tema localmente, crea un nuevo archivo en
{theme}/javascripts/discourse/api-initializers/init-theme.js
luego agrega este envoltorio y coloca tu código en el lugar indicado:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Your code here
});
En las etiquetas de script, la única forma de importar otros módulos JS era usando la sintaxis require(). Si bien eso seguirá funcionando en un archivo .js, pronto quedará obsoleto, por lo que ahora sería un buen momento para convertirlo a importaciones modernas de ES6. Por ejemplo:
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
Para obtener más información sobre los inicializadores de JS:


