.gjsファイルを上書きする - できませんか?

こんにちは。

最近のアップデートで、コンポーネントの1つが壊れてしまいました。以前はインライン引用ボタン quote-button.hbs を拡張していましたが、このファイルはもう存在しません。代わりに、すべてのコードが post-text-selection-toolbar.gjs というgjsファイルに移動されました。「古い方法」でオーバーライドしようとすると、ブラウザから次のようなメッセージが表示されます。

component-templates.js:62 [discourse/theme-48/discourse/templates/components/post-text-selection-toolbar] post-text-selection-toolbar は gjs を使用して作成されたため、そのテンプレートをオーバーライドすることはできません。オーバーライドを無視しています。

これは、Discourse のこの UI 部分を、そこで定義されている PluginOutlets でのみターゲットにできることを意味しますか?

  <PluginOutlet
                @name="quote-share-buttons-after"
                @connectorTagName="span"
              />

 <PluginOutlet @name="quote-button-after" @connectorTagName="div" />

ボタンの状態や新しく追加されたボタンをより細かく制御する必要がある場合はどうなりますか?これは機能性を制限するように感じます。

このケースをどのように処理できるか知っている人はいますか?

「いいね!」 3

こんにちは :waving_hand:

これは api.renderInOutlet で可能になったと思いますか?

「いいね!」 5

@Sören_Geier様、その通りです。UIのこの部分を変更するには、プラグアウトレットを使用する必要があります。プラグアウトレットは、拡張するためのより堅牢な方法であり、Discourseコアのアップデート全体でより信頼性が高くなります。

既存のプラグアウトレットがユースケースに適さない場合は、お知らせください。新しいプラグアウトレットの導入を喜んで検討いたします。

この場合、DEV: Add outlet and API for adding/controlling post selection buttons by keegangeorge · Pull Request #23782 · discourse/discourse · GitHub の提案に関心があるかもしれません。これは「ラッパープラグアウトレット」を導入するもので、テーマ/プラグインが必要に応じてコア実装を完全に置き換えることができます。

これは、プラグアウトレットにレンダリングする別の方法ですが、その通りです。しかし、/connectors/... ファイルと比較して、実際には新しい機能を追加するものではありません。コードスタイル的なものです。

「いいね!」 7