gibt es eine Möglichkeit, Unterkategorien aus den Themenlisten auszublenden und stattdessen die übergeordneten Kategorien unter dem Titel des Themas anzuzeigen?
Mein gewünschtes Ergebnis ist eine Stammkategorie mit n Unterkategorien. Diese Unterkategorien sollen nicht im Frontend angezeigt werden. Sie dienen ausschließlich dazu, den Zugriff auf die Beiträge basierend auf der Gruppenmitgliedschaft einzuschränken.
In der Themenliste möchte ich die übergeordnete Kategorie unter dem Titel des Themas anzeigen, anstatt die Unterkategorie.
Ich habe überlegt, Tags zu verwenden, aber leider kann ich den Zugriff auf die Themen auf diese Weise nicht einschränken.
Wenn dies jedoch nur für eine bestimmte übergeordnete Kategorie gelten soll, müssten Sie weitere Logik hinzufügen. Ich weiß nicht, was der empfohlene Weg dafür wäre – etwa das Registrieren eines Handlebars-Helfers?
Ein anderer Ansatz könnte darin bestehen, immer sowohl den Kategorien- als auch den übergeordneten Link anzuzeigen und die nicht gewünschten dann mit CSS auszublenden.
Die übergeordneten Kategorien sind nicht in der Standardvorlage enthalten, also ja, ich schätze, du musst die Vorlage anpassen. Zumindest ist mir kein leichterer Weg bekannt, dies zu erreichen.
Es gibt keine Seiteneinstellung, um Vorlagen zu ändern. Ich werde dir den Code per Direktnachricht senden, damit du es ausprobieren kannst.
Im Allgemeinen solltest du vollständige Template-Überschreibungen vermeiden, da sie Wartung erfordern – du musst einen Diff durchführen und prüfen, was sich geändert hat, falls ein Discourse-Update dein Theme beschädigt.
Stattdessen kannst du einen Schritt zurücktreten und die Daten anpassen, die an das Template übergeben werden.
Das topic-list-item ist eine Ember-Komponente, sodass du api.modifyClass verwenden kannst, um die gewünschten Änderungen vorzunehmen.
Hier ist beispielsweise ein Codeausschnitt, der das Badge der übergeordneten Kategorie unter dem Titel für Unterthemen anzeigt. Wenn sich das Thema in der Hauptkategorie befindet, hat der Code keine Auswirkung.
Ich habe das obige Snippet angepasst, um diese Änderung widerzuspiegeln. Alles, was Sie tun müssen, ist die IDs der übergeordneten Kategorien zum Array targetCategoryIds hinzuzufügen. Die Kategorie-ID finden Sie, indem Sie die Kategorie-Seite aufrufen und die URL prüfen.
Man muss sich nur ein wenig daran gewöhnen. Falls etwas im Codebase unklar ist, zögere nicht, ein Thema in der Kategorie Dev zu erstellen und mich zu taggen.
@Johani Wo genau muss ich dieses Code-Snippet einfügen?
Ich habe versucht, es in den <head>-Bereich und den Header-Teil meines Theme-Komponenten-Teils einzufügen, wo ich mein gesamtes CSS speichere. Aber dann wird die Themenliste genau an der Stelle abgeschnitten, an der das erste betroffene Thema aus der Unterkategorie aufgelistet werden sollte.
Ja, es gab ein Problem mit der Kategorieeinstellung, das ich lokal übersehen habe. Ich habe das obige Snippet bearbeitet, und es sollte jetzt funktionieren.
Das obige Snippet ermöglicht es dir, die Kategorien festzulegen, auf denen dies funktionieren soll. Wenn du möchtest, dass es auf alle Kategorien angewendet wird, könntest du so etwas wie Folgendes verwenden.