サイドバーボタンとスクリプトをリンクする

サイドバー(ハンバーガーメニュー)の「詳細」またはサイドバーの一番下にあるボタンとして追加し、JavaScriptに接続したいです。そのためにDiscourseのサイドバーにどのようにアクセスすればよいですか?

以下を試しましたが、うまくいきませんでした。
コンポーネントのに配置しました。

<div class="sidebar-custom-sections">
  <ul class="sidebar-more-section-links-details-content-main">
    <li data-list-item-name="Install" class="sidebar-section-link-wrapper" id="sidebar_install_wrapper">
      <a href="#" rel="noopener noreferrer" target="_self" data-link-name="Install" class="sidebar-section-link sidebar-row" id="sidebar_install_button">
        <span class="sidebar-section-link-prefix icon">
          <svg class="fa d-icon d-icon-download svg-icon prefix-icon svg-string" xmlns="http://www.w3.org/2000/svg">
            <use href="#download"></use>
          </svg>
        </span>
        <span class="sidebar-section-link-content-text">
          Install
        </span>
      </a>
    </li>
  </ul>
</div>

新しいリンクを追加したいということであれば、以下のようになります。

addCommunitySectionLink API を使用できます。コメントに例があります。

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/plugin-api.gjs#L2414-L2471

「いいね!」 2
api.addCommunitySectionLink({
  name: "unread",
  route: "discovery.unread",
  title: I18n.t("some.unread.title"),
  text: I18n.t("some.unread.text"),
  icon: "fa-envelope"
});

HTMLのbodyセクションにこのように配置しましたが、追加されていないようです。このように配置することはできませんか?

代わりに Head で以下のコードを使用してください。

<script type="text/discourse-plugin" version="0.8">
    api.addCommunitySectionLink({
      name: "unread",
      route: "discovery.unread",
      title: I18n.t("some.unread.title"),
      text: I18n.t("some.unread.text"),
      icon: "fa-envelope"
    });
</script>

API を使用したい場合は、<script type="text/discourse-plugin" version="0.8"> が重要です。

これでうまくいくはずです。:+1:

「いいね!」 1

    api.addCommunitySectionLink({
      name: "install",
      route: "/install",
      title: "install",
      text: "install",
      icon: "download"
    });

サイドバーのビューに上記のコードを追加しようとしましたが、機能しなかったため、既存のパスを参照して以下の形式で記述しました。しかし、ボタンは表示されるものの、押してもスクリプトが正常に機能しないようです。奇妙なことに、作成したボタンではなく、「Topic」ボタンを押すとスクリプトが機能します。接続するスクリプトはHTMLのheadにも配置しました。


    api.addCommunitySectionLink({
      name: "install",
      route: "discovery.latest",
      title: "install",
      text: "install",
      icon: "download"
    });

「いいね!」 1