ウィジェットの使用は推奨しません。コアの近代化の一環として、最終的には廃止される予定です。
api.addToHeaderIconsについても同様で、api.headerIcons.addに置き換えられ、現在は非推奨となっています。
以下にいくつかの提案をします。
-
テーマコンポーネントを作成する際は、GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes を参考にすることをお勧めします。最新の設定ファイルが含まれており、コードのリンティング/整形に役立ち、標準的な構造を持つ良い習慣です。
-
\u003ctemplate\u003e構文を使用する場合は、ファイル名を.gjs(glimmer JS) に変更してください。そうしないと、正しく機能しない可能性があります。 -
私の例では、テンプレートをファイルに移動させることができます。例えば、次のようになります。
/javascripts/discourse/components/logout-header-button.gjsimport DButton from "discourse/components/d-button"; import routeAction from "discourse/helpers/route-action"; const LogoutHeaderButton = \u003ctemplate\u003e \u003cli class="logout"\u003e \u003cDButton @action={{routeAction "logout"}} class="btn-flat icon" @icon="sign-out-alt" @title="user.log_out" @label="user.log_out" /\u003e \u003c/li\u003e \u003c/template\u003e; export default LogoutHeaderButton;次に、イニシャライザでコンポーネントをインポートし、
headerIconsのパラメータとして使用します。import LogoutHeaderButton from "../components/logout-header-button"; export default apiInitializer("1.28.0", (api) =\u003e { if (api.getCurrentUser()) { api.headerIcons.add("logout", LogoutHeaderButton, { before: "auth" }); } }); -
ボタンの配置は調整可能です。ドキュメントを参照してください。
ご不明な点がございましたらお知らせください。必要であれば、後でPRを作成して例を示すことも可能です。
