Discourse のレンダリングシステムをコードベース全体で標準化するという継続的な取り組みの一環として、トピックリストの実装を置き換えています。
以前は、これは「生の Handlebars」(.hbr)アプローチを使用しており、テンプレートのオーバーライドや生のプラグインアウトレットを介してカスタマイズできました。トピックリストの新しい実装は、最新の Glimmer コンポーネントを使用しており、持続可能な方法でカスタマイズできるようにゼロから構築されています。
新しい実装は、glimmer_topic_list_mode 設定で利用できるようになりました。
disabled: レガシーな「生の Handlebars」トピックリストを使用します。auto: 現在のプラグインとテーマの互換性を検出します。互換性のないものがある場合は、レガシーシステムを使用します。それ以外の場合は、新しい実装を使用します。enabled: 新しいトピックリスト実装を使用します。互換性のないプラグインやテーマがある場合、サイトが破損する可能性があります。
ほとんどの公式テーマとプラグインは、新しいメニューとの互換性に合わせて既に更新されています。しかし、サードパーティ製のプラグイン、テーマ、またはテーマコンポーネントでトピックリストをカスタマイズしている場合は、それらをアップグレードする必要があります。
ブラウザのコンソールに、互換性のない原因を特定する警告メッセージが表示されます。
ロールアウトのタイムライン
これらは変更される可能性のある大まかな見積もりです
2024 年第 4 四半期:
コア実装完了
公式テーマ/プラグインの更新(進行中)
Meta で有効化
アップグレードアドバイスを公開
2025 年第 1 四半期:
-
公式テーマ/プラグインの更新 -
glimmer_topic_list_modeがautoにデフォルト設定され、コンソールでの非推奨メッセージが有効になります。 -
非推奨により、残りの問題に対して管理者に警告バナーが表示されます。 -
サードパーティ製のプラグインとテーマは更新される必要があります。
-
3 月 1 日 - すべてのサイトで新しいトピックリストを有効にします。サイト設定のデフォルトは enabledに切り替わりますが、引き続き「disabled」に戻すことが可能です。
2025 年第 2 四半期
4 月 1 日以降 - レガシーモードと関連コードの最終的な削除
私にとって何を意味しますか?
プラグインまたはテーマに「生の Handlebars」ファイル(.hbr または .raw.hbs という名前)がある場合、新しいバージョンとの互換性のために更新する必要があります。Ember コンポーネント/ルートの通常の .hbs ファイルは、この変更の影響を受けません。
component:topic-list または component:topic-list-item で modifyClass を使用している場合も、アップグレードが必要になります。
サイトにこれらの互換性のないカスタマイズのいずれかがある場合、ブラウザの開発者コンソールに警告メッセージが表示され、どのテーマ/プラグインが原因であるかの情報が含まれます。
置き換えは何ですか?
古い生のプラグインアウトレットの一部は、通常のプラグインアウトレットに変換されました。これらは 1 対 1 で更新できます。
より高度なカスタマイズは、ケースバイケースで評価する必要があります。新しいトピックリストには、簡単で堅牢なカスタマイズのための新しい API が多数用意されています。詳細はこちらをご覧ください。
例をいくつかご紹介します。
-
discourse-assignは、特定のトピックリストに新しい列を導入します。 -
discourse-calendarは、新しいプラグインアウトレットの 1 つを使用してイベント日付バッジを表示します。 -
discourse-solvedは、以前のmodifyClassを置き換えるために新しいvalueTransformerを使用します。
その他のカスタマイズについては?
導入した新しい API を使用してカスタマイズできない場合は、新しい #dev トピックを作成してご相談ください。
私はプラグイン/テーマの作成者です。移行期間中に古いトピックリストと新しいトピックリストの両方をサポートするようにテーマ/プラグインを更新するにはどうすればよいですか?
新しいプラグインアウトレットは、トピックリストの古い実装と新しい実装の両方でレンダリングされます。したがって、新しいものを実装したら、古い生のプラグインアウトレットコネクタを削除するだけです。
DAG ベースのカスタマイズでテンプレートオーバーライドまたは非最新化されたアウトレットを置き換える場合は、移行期間中は両方の実装を維持する必要があります。
テーマ/プラグインが古い実装と新しい実装の両方をサポートしたら、すべての .hbr ファイルの先頭に次のマジックコメントを追加できます。
{{!-- has-modern-replacement --}}
これにより、非推奨メッセージがサイレントになり、「auto」モードで新しい実装が使用されるようになります。


