Lier les boutons de la barre latérale et les scripts

Je voudrais l’ajouter sous forme de bouton dans la barre latérale (menu hamburger) → Plus ou en bas de la barre latérale, puis connecter JavaScript. Comment puis-je accéder à la barre latérale de Discourse pour ce faire ?

J’ai fait ce qui suit, mais cela n’a pas fonctionné.
Je l’ai mis dans le <body> du composant.

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

Si vous voulez ajouter un nouveau lien ici :

Alors, vous pouvez utiliser l’API addCommunitySectionLink. Vous avez un exemple dans le commentaire.

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

2 « J'aime »
<script>
api.addCommunitySectionLink({
  name: "unread",
  route: "discovery.unread",
  title: I18n.t("some.unread.title"),
  text: I18n.t("some.unread.text"),
  icon: "fa-envelope"
});
</script>

Je l’ai mis dans la section du corps HTML du composant comme ceci, mais il ne semble pas être ajouté davantage. Est-il impossible de le faire de cette façon ?

Vous devriez utiliser le code suivant dans Head à la place :

<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"> est important si vous souhaitez utiliser l’API.

Cela devrait mieux fonctionner. :+1:

1 « J'aime »

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

J’ai essayé d’ajouter le code ci-dessus à la vue de la barre latérale, mais cela n’a pas fonctionné, j’ai donc écrit dans le format ci-dessous, en me référant au chemin existant. Cependant, lorsque le bouton apparaît et que je clique dessus, le script ne semble pas fonctionner correctement. Curieusement, le script fonctionne lorsque j’appuie sur le bouton « Topic » plutôt que sur le bouton que j’ai créé. Le script à connecter a également été placé dans l’en-tête du HTML.


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

1 « J'aime »