Die Verwendung von <script type='text/discourse-plugin'> oder <script type='text/x-handlebars'> in Themes ist jetzt veraltet. Jede Verwendung dieser Tags in Themes sollte gemäß den folgenden Anweisungen aktualisiert werden.
Reguläre <script> und <script type='text/javascript'> sind von dieser Änderung nicht betroffen.
Zeitplan
Dies sind grobe Schätzungen, die sich ändern können
-
Mai 2025 - Konsolen-Deprecation-Meldungen aktiviert
-
Juli 2025 - Admin-Warnbanner aktiviert
-
Ende September 2025März 2026 - 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 umstrukturiert werden.
Um bei 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
Seit März 2026 sind auch
.hbs-Dateien veraltet. Nachdem Sie diese Konvertierung vorgenommen haben, fahren Sie mit den Anweisungen unter Deprecating .hbs file extension in themes and plugins fort.
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 die JS-Registerkarte (dort, 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 diese Hüllfunktion 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. Obwohl dies in einer .js-Datei weiterhin funktionieren wird, wird es bald veraltet sein. Es wäre also ein guter Zeitpunkt, es auf moderne ES6-Imports umzustellen. 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:


