Recevoir la description complète d'une catégorie dans un thème

À ma connaissance, la description est stockée (et maintenue) dans la première section du premier message d’une description.

Je souhaite ajouter des liens près des boutons « haut » et « Derniers » dans la catégorie. Comme un thème ne peut pas être configuré pour chaque catégorie, j’ai pensé que je pouvais simplement ajouter les données pour les liens dans la « partie cachée » d’une description de catégorie, car seul le premier fragment de la description de la catégorie est affiché dans la liste des catégories.

Les données ressembleraient à ceci {TAG, texteDuLien, titreDuLien, hrefDuLien}.

Désolé, je suppose que ce n’est pas l’idéal :

Est-il possible d’obtenir les données complètes du texte de description d’une catégorie dans un thème ou un widget ?

Merci d’avance.

Oui, c’est ce que fait Category Banners.

Eh bien, je pense que

  • category.description renvoie la description de la catégorie bien formée
  • category.description_text renvoie les données brutes

mais les deux ne renvoient que le premier chapitre de la description et non le premier message complet de la catégorie qui contient la description. Est-ce que je manque quelque chose ?

C’est le comportement attendu. Discourse utilise uniquement le premier paragraphe du sujet « À propos » comme description de la catégorie partout dans l’interface utilisateur.

Si vous avez besoin d’autre chose, vous devrez effectuer un appel API supplémentaire pour récupérer le contenu.

Cela serait-il possible dans un composant de thème ? Avez-vous un exemple ?

Topic List Sidebars fait exactement cela !

Si l’objectif est d’afficher conditionnellement les liens sur des pages de catégories spécifiques, je vous recommande de prendre un peu de recul et d’essayer une approche différente.

Imaginons que vous ayez un paramètre comme ceci :

target_category, link_text, link_title, link_href

Vous pouvez ensuite faire quelque chose comme cela.

api.addNavigationBarItem({
  displayName: text, // texte du lien
  name: title, // titre du lien
  href: href, // href du lien
  customFilter: category => {
    return (
      category && category.name.toLowerCase() === TARGET_CATEGORY.toLowerCase() // catégorie cible
    );
  }
});

L’élément important ici est le customFilter, car je pense que c’est ce que vous recherchez.

Si vous avez plusieurs liens, vous devrez envelopper cela dans un forEach.

Merci @Falco. C’était exactement ce dont j’avais besoin.

Merci @Johani. J’ai réfléchi à votre suggestion. Malheureusement, nous avons un grand nombre de catégories et la configuration dans les paramètres serait volumineuse et difficile à gérer. C’est pourquoi j’ai écrit ce thème.

J’ai réussi à le faire fonctionner correctement. Après avoir ajouté la prise en charge de parent_categories et corrigé quelques petits bugs, je le documenterai et le « publierai de manière appropriée ».

Enfin, je suppose que c’est tout. N’hésitez pas à l’utiliser. Un grand « Merci » à tous ceux qui travaillent sur Discourse. Excellent travail.

Lien vers le composant du thème :