L’utilisation de <script type='text/discourse-plugin'> ou <script type='text/x-handlebars'> dans les thèmes est désormais dépréciée. Toute utilisation de ces balises dans les thèmes doit être mise à jour conformément aux instructions ci-dessous.
Les balises <script> et <script type='text/javascript'> ordinaires ne sont pas affectées par ce changement.
Calendrier
Ce sont des estimations approximatives, sujettes à modification
-
Mai 2025 - Messages de dépréciation activés dans la console
-
Juillet 2025 - Bannières d’avertissement pour les administrateurs activées
-
Fin septembre 2025 - Suppression de la fonctionnalité
Conversion de <script type='text/x-handlebars'>
Les modèles introduits avec cette méthode doivent être déplacés vers des fichiers .hbs dédiés, ou refactorisés en fichiers .gjs.
Pour conserver au format HBS, les modèles de connecteurs peuvent être placés dans :
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
et les modèles de composants peuvent être placés dans :
{theme}/javascripts/discourse/components/{component-name}.hbs
Pour construire des connecteurs et des composants dans le format moderne .gjs, consultez ce chapitre du tutoriel du développeur de thèmes :
Conversion de <script type='text/discourse-plugin'>
Le code contenu dans ces balises peut être migré vers un fichier JavaScript dédié.
Si vous développez votre thème via l’interface du panneau d’administration, copiez le code hors de la balise <script> et déplacez-le dans l’onglet JS (où il est indiqué // your code here).
Si vous développez votre thème localement, créez un nouveau fichier à l’adresse :
{theme}/javascripts/discourse/api-initializers/init-theme.js
puis ajoutez ce wrapper, et placez votre code à l’endroit indiqué :
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Your code here
});
Dans les balises script, la seule façon d’importer d’autres modules JS était d’utiliser la syntaxe require(). Bien que cela fonctionne toujours dans un fichier .js, cela sera bientôt déprécié, il serait donc bon de le convertir dès maintenant en imports ES6 modernes. Par exemple :
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
Pour plus d’informations sur les initialisateurs JS :


