Existe-t-il un moyen de « masquer » les sous-catégories dans les listes de sujets et d’afficher à la place les catégories parentes sous le titre du sujet ?
Mon objectif est d’avoir une catégorie racine avec n sous-catégories. Ces sous-catégories ne doivent pas être affichées dans l’interface utilisateur. Elles servent uniquement à restreindre l’accès aux publications en fonction de l’appartenance à un groupe.
Dans la liste des sujets, je souhaiterais afficher la catégorie parente sous le titre du sujet plutôt que la sous-catégorie.
J’ai pensé à utiliser des tags, mais malheureusement, je ne peux pas restreindre l’accès aux sujets de cette manière.
Cependant, si vous ne souhaitez que cela se produise pour une catégorie parente spécifique, vous devrez ajouter davantage de logique. Je ne sais pas quelle serait la méthode recommandée pour le faire, peut-être en enregistrant un helper Handlebars ?
Une autre approche consisterait à afficher toujours à la fois les liens de la catégorie et de la catégorie parente, puis à masquer ceux que vous ne souhaitez pas avec du CSS.
Les catégories parentes ne figurent pas dans le modèle par défaut, donc oui, je suppose que vous devez modifier le modèle. Du moins, je ne connais pas d’approche plus légère pour y parvenir.
Il n’existe aucun paramètre de site pour modifier les modèles ; je vous enverrai le code par message privé pour que vous puissiez l’essayer.
En général, évitez de remplacer complètement les modèles, car cela nécessite une maintenance : vous devez effectuer un diff et vérifier les modifications si une mise à jour de Discourse casse votre thème.
Ce que vous pouvez faire, c’est faire un pas en arrière et modifier les données transmises au modèle à la place.
Le composant topic-list-item est un composant Ember, vous pouvez donc utiliser api.modifyClass pour apporter les modifications souhaitées.
Par exemple, voici un extrait de code qui affiche le badge de la catégorie parente dans les sujets des sous-catégories, sous le titre. Si le sujet se trouve dans la catégorie principale, ce code n’aura aucun effet.
J’ai modifié l’extrait ci-dessus pour refléter ce changement. Il vous suffit d’ajouter les identifiants des catégories parentes au tableau targetCategoryIds. Vous pouvez trouver l’identifiant d’une catégorie en visitant sa page et en vérifiant l’URL.
https://meta.discourse.org/c/support/6
Le « 6 » à la fin de l’URL ci-dessus est l’identifiant de la catégorie « support » ici sur Meta.
Il faut juste un peu de temps pour s’y habituer. Si quelque chose dans la base de code n’est pas clair, n’hésitez pas à créer un sujet dans la catégorie Dev et à me taguer.
@Johani Où dois-je exactement placer cet extrait de code ?
J’ai essayé de le placer dans la section <head> et dans l’en-tête de mon composant de thème où je stocke tout mon CSS. Mais dans ce cas, la liste des sujets est coupée exactement à l’endroit où le premier sujet concerné de la sous-catégorie devrait être listé.
Oui, il y avait un problème lié à la façon dont la catégorie était définie, que j’avais manqué localement. J’ai modifié l’extrait ci-dessus, et cela devrait fonctionner maintenant.
L’extrait ci-dessus vous permet de définir les catégories sur lesquelles vous souhaitez que cela fonctionne. Si vous voulez que cela fonctionne sur toutes les catégories, vous utiliseriez quelque chose comme ceci.