Ändern Sie die Standard-Gruppenseiten zu /messages

Sicher, Sie können so etwas im Header-Tab Ihres Themes/Komponenten versuchen. Ich habe einige Kommentare im Snippet hinterlassen, falls Sie mitverfolgen möchten. Sie können diese löschen, sobald Sie bereit sind, es zu verwenden.

Es gelten die gleichen Regeln. Wenn der Benutzer Mitglied der Gruppe ist und die Gruppe Nachrichten hat, navigiert Discourse zur Gruppennachrichtenzentrale. Andernfalls landet der Benutzer im Mitgliederverzeichnis.

<script type="text/discourse-plugin" version="0.8">
  // Teil 1: Ändern Sie den Pfad für die Links in den Gruppenkarten. Dies stellt sicher, dass der Linktitel widerspiegelt, wohin er führt, und behandelt das Öffnen des Links in einem neuen Tab.
  const discourseComputed = require("discourse-common/utils/decorators").default;
  
  api.modifyClass("component:group-card-contents", {
    // Die Eigenschaft groupPath wird verwendet, um die href für die Gruppenlinks
    // in der Gruppenkarte zu generieren. Lassen Sie uns diese modifizieren
    @discourseComputed("group")
    groupPath(group) {
      // Holen Sie sich den Standardwert aus dem Kern
      let groupURL = this._super(...arguments);

      // Wenn der Benutzer unsere Anforderung erfüllt, modifizieren Sie die URL, damit sie zur Nachrichtenzentrale führt
      if (group.is_group_user && group.has_messages) {
        groupURL = `${groupURL}/messages/`;
      }

      // Geben Sie entweder den Standard- oder den modifizierten Wert zurück
      return groupURL;
    }
  });

  // Teil 2: Ändern Sie das In-App-Routing. Dies stellt sicher, dass die normale In-App-Navigation
  // korrekt gehandhabt wird und der Benutzer zur Gruppennachrichtenzentrale geleitet wird, wenn er die
  // Anforderungen erfüllt
  
  const DiscourseURL = require("discourse/lib/url").default;
  const { groupPath } = require("discourse/lib/url");
  const { action } = require("@ember/object");

  api.modifyClass("controller:user-card", {

    // showGroup ist hier eine Aktion, die zum User-Card-Controller gehört.
    // Dies wird aufgerufen, wenn Sie auf den Gruppennamen / Avatar innerhalb von Gruppenkarten klicken
    @action
    showGroup(group) {
      // Rufen Sie super auf, um sicherzustellen, dass der Code aus dem Kern zuerst geladen wird
      this._super(...arguments);

      // groupPath ist eine integrierte Discourse-URL-Hilfsfunktion
      let groupURL = groupPath(group.name);

      // Wenn der Benutzer die Anforderungen erfüllt, modifizieren Sie die URL
      if (group.is_group_user && group.has_messages) {
        groupURL = `${groupURL}/messages/`;
      }

      // Rufen Sie routeTo() entweder mit der Standard- oder der modifizierten groupURL auf
      DiscourseURL.routeTo(groupURL);
    }
  });
</script>