# Unterkategorien ausblenden, ohne ihre Themen in der Themenliste auszublenden?

**URL:** https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502
**Category:** Support
**Created:** [30. Juni 2021 um 15:05 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502 "2021-06-30T15:05:43Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [30. Juni 2021 um 15:05 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/1 "2021-06-30T15:05:43Z")

</div>

Hey Leute,

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.

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [30. Juni 2021 um 19:25 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/2 "2021-06-30T19:25:08Z")

</div>

Die Vorlage für Elemente in der Themenliste zeigt nur den Link zur Kategorie des Themas an, wie hier:  
`{{category-link topic.category}}`

Sie müssten diese Vorlage also anpassen, um Links zur übergeordneten Kategorie anzuzeigen:

```plaintext
{{#if topic.category.parentCategory}}
  {{category-link topic.category.parentCategory}}
{{else}}
  {{category-link topic.category}}
{{/if}}

```

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.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [1. Juli 2021 um 00:32 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/3 "2021-07-01T00:32:16Z")

</div>

Ich habe es nicht geprüft, aber ich denke, du solltest sie mit CSS ausblenden können.

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [1. Juli 2021 um 10:59 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/4 "2021-07-01T10:59:20Z")

</div>

> [@manuel](#):
>
> Ein anderer Ansatz könnte darin bestehen, immer sowohl die Kategorie- als auch die übergeordneten Links anzuzeigen und dann diejenigen, die man nicht möchte, mit CSS auszublenden.

Muss ich für diesen Ansatz ebenfalls die Vorlage ändern? Ich konnte in meinem Admin-Bereich keine entsprechende Site-Einstellung finden.

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [1. Juli 2021 um 11:17 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/5 "2021-07-01T11:17:52Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![Johani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johani/32/176920_2.png) [@Johani](https://meta.discourse.org/u/Johani)
#### Post date: [1. Juli 2021 um 13:38 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/6 "2021-07-01T13:38:13Z")

</div>

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.

```javascript
<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");

  // IDs der übergeordneten Kategorien
  const targetCategoryIds = [9, 15, 50];

  const useParentCategory = function () {
    const parentCategory = this.attrs.topic.category.parentCategory;
    const switchToParent = parentCategory && targetCategoryIds.includes(parentCategory.id)

    if (switchToParent) {
      this.attrs.topic.set("category", parentCategory);
    }
  };

  api.modifyClass("component:topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });

  api.modifyClass("component:latest-topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });
</script>

```

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [1. Juli 2021 um 13:44 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/7 "2021-07-01T13:44:47Z")

</div>

Das ist großartig!

Gibt es eine Möglichkeit, es auf eine oder mehrere bestimmte Kategorien zu beschränken?

---

<div class="post-metadata">

### Author: ![Johani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johani/32/176920_2.png) [@Johani](https://meta.discourse.org/u/Johani)
#### Post date: [1. Juli 2021 um 14:04 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/8 "2021-07-01T14:04:37Z")

</div>

Zwei verschiedene Ansätze, je nachdem, was Sie erreichen möchten. Was ist das gewünschte Ergebnis?

1. Alle Unterkategorien unter der übergeordneten Kategorie „foo

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [1. Juli 2021 um 14:27 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/9 "2021-07-01T14:27:32Z")

</div>

@Johani

[quote=“Johani, Beitrag:8, Thema:195502”]

- Alle Unterkategorien unter der übergeordneten Kategorie „foo

---

<div class="post-metadata">

### Author: ![Johani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johani/32/176920_2.png) [@Johani](https://meta.discourse.org/u/Johani)
#### Post date: [1. Juli 2021 um 14:44 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/10 "2021-07-01T14:44:56Z")

</div>

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.

```plaintext
 https://meta.discourse.org/c/support/6

```

Die „6

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [1. Juli 2021 um 14:52 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/11 "2021-07-01T14:52:36Z")

</div>

> [@Johani](#):
>
> Du kannst einen Schritt zurücktreten und stattdessen die Daten anpassen, die an die Vorlage übergeben werden.

Danke für den Beitrag, @Johani! Ich stecke gerade erst in Ember ein … ihr seid wirklich eine große Hilfe! 🙏 😌

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [1. Juli 2021 um 14:59 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/12 "2021-07-01T14:59:39Z")

</div>

Das ist großartig! Vielen Dank für die schnelle Hilfe.

---

<div class="post-metadata">

### Author: ![Johani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johani/32/176920_2.png) [@Johani](https://meta.discourse.org/u/Johani)
#### Post date: [1. Juli 2021 um 15:21 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/13 "2021-07-01T15:21:36Z")

</div>

> [@manuel](#):
>
> Gerade erst mit Ember angefangen

Das ist toll zu hören!

![Two Thumbs Up](https://global.discourse-cdn.com/meta/original/3X/4/2/421b852f0cdee50928bf3801ab51876951cdd9ce.webp)

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.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [1. Juli 2021 um 18:29 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/14 "2021-07-01T18:29:18Z")

</div>

Das ist wirklich großartig. Danke dafür und danke an alle, die dir die Zeit dafür geben.

👍

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [2. Juli 2021 um 10:55 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/15 "2021-07-02T10:55:12Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Johani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johani/32/176920_2.png) [@Johani](https://meta.discourse.org/u/Johani)
#### Post date: [7. Juli 2021 um 08:06 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/18 "2021-07-07T08:06:15Z")

</div>

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.

```javascript
<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");

  const useParentCategory = function () {
    const parentCategory = this.attrs.topic.category.parentCategory;

    if (parentCategory) {
     this.attrs.topic.set("category", parentCategory);
    }
  };

  api.modifyClass("component:topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });

  api.modifyClass("component:latest-topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });
</script>

```

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [7. Juli 2021 um 08:21 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/20 "2021-07-07T08:21:48Z")

</div>

Danke @Johani für deine Hilfe, ich schätze das wirklich sehr!

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [6. August 2021 um 08:21 UTC](https://meta.discourse.org/t/hide-subcategories-without-hiding-their-topics-in-topic-list/195502/21 "2021-08-06T08:21:51Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
