saquetim
(Sérgio Saquetim)
1
皆さん、こんにちは!レガシーな「ウィジェット」レンダリングシステムからの移行努力の最終段階として、Discourseでのウィジェットの使用を非推奨とし、間もなく完全に無効化します。
タイムライン
これらは推定値であり、変更される可能性があります
2025年7月:
コアに非推奨の警告を追加し、それらを無効にする実験的なサイト設定を追加
Metaでアナウンスを公開
2025年8月
公式プラグインとテーマコンポーネントをGlimmerコンポーネントを使用するようにアップグレード
Metaをウィジェット無効化状態で実行
管理者警告バナーで非推奨メッセージを有効化
2025年第3四半期:
- サードパーティのプラグインとテーマをアップグレードする必要があります。
2025年第4四半期:
非互換なプラグインやテーマは、これ以降正常に動作しなくなります。
これはあなたにとって何を意味しますか?
プラグインやテーマが「ウィジェット」APIを使用している場合、2025年第4四半期の期限までに、それらを新しいAPIまたはGlimmerコンポーネントを使用するように更新する必要があります。
カスタムプラグインやテーマをインストールしています。更新する必要がありますか?
以下のいずれかを使用している場合は、プラグインまたはテーマを更新する必要があります。
createWidget
decorateWidget、changeWidgetSetting、reopenWidget、またはattachWidgetAction
MountWidgetコンポーネント
プロのヒント: これらのカスタマイズのいずれかを使用する拡張機能がある場合、コンソールに警告が表示され、アップグレードが必要なプラグインまたはコンポーネントが特定されます。
重要: インスタンスで複数のテーマを使用している場合は、警告はアクティブなプラグインと現在使用されているテーマおよびテーマコンポーネントに対してのみ表示されるため、すべてを確認してください。
非推奨IDは次のとおりです: discourse.widgets-end-of-life
最近の投稿ストリームのモダナイゼーションとどのように関連していますか?
投稿ストリームは、ウィジェットレンダリングシステムを使用し続けていたDiscourseの最後の主要部分でした。そのモダナイゼーションにより、ウィジェットシステムの完全な廃止を進めることができます。これらの変更の詳細については、アップグレードガイドをご覧ください。
アップグレード方法は?
サードパーティのプラグインやテーマを使用している場合: 作者が新しいシステムと互換性のあるアップグレード版をリリースしているか確認してください。
プラグイン/テーマの作者の場合:
- カスタムウィジェットをGlimmerコンポーネントに置き換えます
- UIに挿入するためにplugin-outletコネクタを使用します
これらの更新を行うための詳細については、開発者ガイドを確認してください。
「いいね!」 8
saquetim
(Sérgio Saquetim)
4
Discourse のインストールを次に更新すると、ウィジェットレンダリングシステムが無効になり、ウィジェットベースのカスタマイズは一切レンダリングされなくなります。
現時点では、互換性のないサイトで管理者は次の設定値を変更することで、古い動作を再度有効にすることができます。
deactivate_widgets_rendering
これは、約 1 か月後に予定されている Discourse のコードベースからの古いコードの削除前の最終段階です。その後、ウィジェットを再度有効にすることはできなくなります。
「いいね!」 6
saquetim
(Sérgio Saquetim)
5
Discourse からウィジェットシステムを削除するプルリクエストが昨日マージされました。
「いいね!」 4
loginerror
(Maciej Kuźmicz)
6
もしかしたら馬鹿げた質問かもしれませんが、Discourse が、選択した CLI コードツールにフィードできるガイド/ヘルパーを含む .md ファイルを提供することは可能だと思いますか?それはプラグインコンポーネントの移行に役立ちます。
ただの思いつきです 
「いいね!」 1
saquetim
(Sérgio Saquetim)
7
最も一般的なカスタマイズパターン(post-streamを変更したものなど)の移行手順を提供しようと試みました。
ウィジェットを使用してほぼすべてのことが可能になったため、より包括的なガイドを作成するのは困難です。残りのカスタマイズニーズは、ケースバイケースでコンポーネントに変換する必要があります。
私はこれらのトピックを監視しており、移行する必要があるユーザーを支援するためにここに投稿された質問に答えようとします。
ブラウザコンソールを使用してフォーラムで非推奨を引き起こしているように見えるコードを簡単に確認したところ、次の行のようです。
const { iconNode } = require("discourse-common/lib/icon-library");
let iconsjira = iconNode('icons-jira');
iconNode はウィジェットでのみ使用されており、現在は noop 関数になっています。あなたのコードでは、この変数が使用されていないように見えるため、これらの行を削除しても安全なはずです。
さらにサポートが必要な場合はお知らせください。