L’utilisation de <script type='text/discourse-plugin'> ou <script type='text/x-handlebars'> dans les thèmes est désormais obsolète. 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'> régulières ne sont pas affectées par ce changement.
Calendrier
Ce ne sont que des estimations approximatives, sujettes à modification
-
Mai 2025 - Messages de dépréciation dans la console activés
-
Juillet 2025 - Bannières d’avertissement pour les administrateurs activées
-
Fin septembre 2025Mars 2026 - Suppression de la fonctionnalité
Conversion de <script type='text/x-handlebars'>
Les modèles introduits en utilisant cette méthode doivent être déplacés vers des fichiers .hbs dédiés, ou être refactorisés en fichiers .gjs.
Pour conserver le 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
Depuis mars 2026, les fichiers
.hbssont également obsolètes. Après avoir effectué cette conversion, passez aux instructions de Deprecating .hbs file extension in themes and plugins
Pour créer des connecteurs et des composants dans le format .gjs moderne, consultez ce chapitre du tutoriel du développeur de thèmes :
Conversion de <script type='text/discourse-plugin'>
Le code à l’intérieur de 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 (là 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) => {
// Votre code ici
});
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 obsolète, il est donc temps de le convertir aux importations 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 :


