Erhalte die vollständige Beschreibung einer Kategorie in einem Theme

AFAIK wird die Beschreibung im ersten Abschnitt des ersten Beitrags in einer Beschreibung gespeichert (und gepflegt).

Ich möchte Links in der Nähe der Schaltflächen „Top“ und „Neueste“ in der Kategorie hinzufügen. Da ein Theme nicht für jede Kategorie konfiguriert werden kann, dachte ich, ich könnte einfach die Daten für die Links im „versteckten Teil“ einer Kategorienbeschreibung hinzufügen – da im Kategorienspiegel nur das erste Fragment der Kategorienbeschreibung angezeigt wird.

Die Daten würden so aussehen: {TAG,linkText,linkTitle,linkHref}.

Entschuldigung, ich schätze, das ist nicht die beste Lösung:

Ist es möglich, die vollständigen Daten des Beschreibungstexts einer Kategorie in einem Theme oder Widget abzurufen?

Vielen Dank im Voraus.

Ja, genau das bietet Category Banners.

Nun, ich denke,

  • category.description gibt die gut formatierte Kategorienbeschreibung zurück
  • category.description_text gibt die Rohdaten zurück

aber beide geben nur das erste Kapitel der Beschreibung zurück und nicht den gesamten ersten Beitrag der Kategorie, der die Beschreibung enthält. Habe ich etwas übersehen?

Das ist das erwartete Verhalten. Discourse verwendet im gesamten UI nur den ersten Absatz des „Über uns“-Themas als Kategorienbeschreibung.

Falls du noch etwas anderes benötigst, musst du einen zusätzlichen API-Aufruf für den Inhalt durchführen.

Wäre das in einer Theme-Komponente möglich? Haben Sie ein Beispiel?

Topic List Sidebars macht genau das!

Wenn das Ziel darin besteht, die Links bedingt auf bestimmten Kategorie-Seiten darzustellen, empfehle ich, einen Schritt zurückzutreten und einen anderen Ansatz zu versuchen.

Nehmen wir an, du hast eine Einstellung wie diese:

target_category, link_text, link_title, link_href

Dann kannst du etwas wie dies tun.

api.addNavigationBarItem({
  displayName: text, // Link-Text
  name: title, // Link-Titel
  href: href, // Link-Href
  customFilter: category => {
    return (
      category && category.name.toLowerCase() === TARGET_CATEGORY.toLowerCase() // Zielkategorie
    );
  }
});

Der wichtige Teil hier ist das customFilter, da ich denke, dass genau das ist, was du suchst.

Wenn du mehrere Links hast, musst du dies in einem forEach umschließen.

Danke @Falco. Das war genau das, was ich brauchte.

Danke @Johani. Ich habe über deinen Vorschlag nachgedacht. Leider haben wir eine riesige Anzahl von Kategorien, und die Konfiguration in den Einstellungen wäre zu groß und nicht überschaubar. Deshalb habe ich dieses Theme erstellt.

Es funktioniert jetzt einwandfrei. Nach der Unterstützung für parent_categories und der Behebung einiger kleinerer Fehler werde ich es dokumentieren und „offiziell veröffentlichen“.

Schließlich, ich denke, das ist es. Fühlen Sie sich frei, es zu verwenden. Ein großes „Vielen Dank