Link zur Seitenleisten-Schaltflächen und Skripten

Ich möchte es in Form eines Buttons in der Seitenleiste (Hamburger-Menü) → Mehr oder am unteren Rand der Seitenleiste hinzufügen und dann JavaScript verbinden. Wie greife ich auf die Discourse-Seitenleiste zu, um das zu tun?

Ich habe Folgendes getan, aber es hat nicht funktioniert.
Ich habe es in den <body> der Komponente eingefügt.

<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">
          Installieren
        </span>
      </a>
    </li>
  </ul>
</div>

Wenn Sie das Hinzufügen eines neuen Links meinen:\n\n

\n\nDann können Sie die addCommunitySectionLink-API verwenden. Sie haben ein Beispiel im Kommentar.\n\nhttps://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/plugin-api.gjs#L2414-L2471

2 „Gefällt mir“
<script>
api.addCommunitySectionLink({
  name: "unread",
  route: "discovery.unread",
  title: I18n.t("some.unread.title"),
  text: I18n.t("some.unread.text"),
  icon: "fa-envelope"
});
</script>

Ich habe es so in den HTML-Body-Bereich der Komponente eingefügt, aber es scheint nicht mehr hinzugefügt zu werden. Ist es nicht möglich, es auf diese Weise zu tun?

Sie sollten den folgenden Code stattdessen in Head verwenden:

<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>

<script type="text/discourse-plugin" version="0.8"> ist wichtig, wenn Sie die API verwenden möchten.
Das sollte besser funktionieren. :+1:

1 „Gefällt mir“

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

Ich habe versucht, den obigen Code zur Seitenleiste hinzuzufügen, aber er hat nicht funktioniert. Daher habe ich ihn im folgenden Format geschrieben und mich dabei auf den vorhandenen Pfad bezogen. Wenn jedoch der Button erscheint und ich ihn drücke, scheint das Skript nicht richtig zu funktionieren. Seltsamerweise funktioniert das Skript, wenn ich auf den Button ‘Topic’ drücke, anstatt auf den von mir erstellten Button. Das Skript, das verbunden werden sollte, wurde ebenfalls in den Head des HTML eingefügt.


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

1 „Gefällt mir“