Die Verwendung von <script type='text/discourse-plugin'> oder <script type='text/x-handlebars'> in Themes ist nun veraltet. Jegliche Verwendung dieser Tags in Themes sollte gemäß den untenstehenden Anweisungen aktualisiert werden.
Reguläre <script> und <script type='text/javascript'> sind von dieser Änderung nicht betroffen.
Zeitplan
Dies sind grobe Schätzungen, Änderungen vorbehalten
-
Mai 2025 - Konsolen-Deprecationsmeldungen aktiviert
-
Juli 2025 - Admin-Warnbanner aktiviert
-
Ende September 2025 - Entfernung der Funktion
Konvertierung von <script type='text/x-handlebars'>
Vorlagen, die mit dieser Methode eingeführt wurden, sollten in dedizierte .hbs-Dateien verschoben oder in gjs-Dateien refaktorisiert werden.
Um als HBS zu bleiben, können Connector-Vorlagen platziert werden in:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
und Komponenten-Vorlagen können platziert werden in:
{theme}/javascripts/discourse/components/{component-name}.hbs
Um Connectors und Komponenten im modernen .gjs-Format zu erstellen, lesen Sie dieses Kapitel des Theme-Entwickler-Tutorials:
Konvertierung von <script type='text/discourse-plugin'>
Code in diesen Tags kann in eine dedizierte JavaScript-Datei migriert werden.
Wenn Sie Ihr Theme über die Admin-Panel-Oberfläche entwickeln, kopieren Sie den Code aus dem <script> und verschieben Sie ihn in den JS-Tab (wo // your code here steht).
Wenn Sie Ihr Theme lokal entwickeln, erstellen Sie eine neue Datei unter
{theme}/javascripts/discourse/api-initializers/init-theme.js
fügen Sie dann diesen Wrapper hinzu und platzieren Sie Ihren Code an der angegebenen Stelle:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Your code here
});
In Skript-Tags war die einzige Möglichkeit, andere JS-Module zu importieren, die require()-Syntax. Während dies in einer .js-Datei immer noch funktioniert, wird es bald veraltet sein, daher wäre jetzt ein guter Zeitpunkt, es in moderne ES6-Imports zu konvertieren. Zum Beispiel:
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
Weitere Informationen zu JS-Initializern finden Sie unter:


