テーマで \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月下旬 - 機能の削除
\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
最新の .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
});
スクリプトタグでは、require() 構文を使用して他の JS モジュールをインポートすることしかできませんでした。これは .js ファイルでも引き続き機能しますが、まもなく非推奨になるため、最新の ES6 インポートに変換する良い機会です。たとえば、次のようになります。
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
JS イニシャライザーの詳細については、以下を参照してください。


