テーマで \u003cscript type='text/discourse-plugin\u003e または \u003cscript type='text/x-handlebars'\u003e を使用することは非推奨になりました。テーマ内のこれらのタグの使用は、以下の指示に従って更新する必要があります。
通常の \u003cscript\u003e および \u003cscript type='text/javascript'\u003e はこの変更の影響を受けません。
タイムライン
これらは概算であり、変更される可能性があります
-
2025年5月 - コンソールでの非推奨メッセージが有効化されます
-
2025年7月 - 管理者警告バナーが有効化されます
-
2025年9月下旬2026年3月 - 機能の削除
\u003cscript type='text/x-handlebars'\u003e の変換
この方法で導入されたテンプレートは、専用の .hbs ファイルに移動するか、gjs ファイルにリファクタリングする必要があります。
HBS のままにするには、コネクタテンプレートを次の場所に配置できます。
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
および、コンポーネントテンプレートは次の場所に配置できます。
{theme}/javascripts/discourse/components/{component-name}.hbs
2026年3月以降、
.hbsファイルも非推奨になります。この変換を行った後、Deprecating .hbs file extension in themes and plugins にある指示に進んでください。
最新の .gjs 形式でコネクタとコンポーネントをビルドするには、テーマ開発者チュートリアルのこの章を参照してください。
\u003cscript type='text/discourse-plugin'\u003e の変換
これらのタグ内のコードは、専用の JavaScript ファイルに移行できます。
管理パネルインターフェース経由でテーマを開発している場合は、\u003cscript\u003e からコードをコピーし、JS タブ(// your code here と表示されている場所)に移動します。
ローカルでテーマを開発している場合は、次の場所に新しいファイルを作成します。
{theme}/javascripts/discourse/api-initializers/init-theme.js
次に、このラッパーを追加し、コードを指定された場所に配置します。
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Your code here
});
スクリプトタグ内では、他の JS モジュールをインポートする唯一の方法は require() 構文を使用することでした。これは .js ファイルでも引き続き機能しますが、間もなく非推奨になるため、これを最新の ES6 インポートに変換する良い機会です。たとえば:
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
JS 初期化子に関する詳細情報:


