Problème d'affichage des sous-catégories pour un site de plus de 1 000 catégories

J’héberge un site qui a plus de 1 000 catégories. La communauté pour laquelle il fonctionne préfère utiliser les catégories pour la séparation sémantique plutôt que, par exemple, les tags.

Cela fonctionne raisonnablement bien, cependant, j’ai rencontré un problème récemment (et je ne suis pas sûr quand il a commencé) :

Naviguer vers une vue de catégorie qui a plus de 20 sous-catégories et utilise des « Boîtes » pour rendre les éléments de lien de sous-catégorie, n’affiche que (les 20 premières ?) catégories dans la liste.
Cliquer sur l’élément de sélection déroulant details affiche la liste complète.

D’après mon enquête initiale, j’ai trouvé discourse/app/models/category_list.rb at main · discourse/discourse · GitHub et son comportement concernant la gestion des sites qui ont plus de 1 000 catégories.

Je soupçonne qu’associé à la façon dont la vue discourse/app/views/categories/index.html.erb at main · discourse/discourse · GitHub gère la liste de catégories qu’elle reçoit, et ne la paginate pas, la vue n’affiche que 20 sous-catégories.

Est-ce le comportement attendu ?

Oui, je pense que votre suspicion est tout à fait justifiée. Discourse n’a pas été conçu pour gérer des milliers de catégories, et ce pour de nombreuses raisons. Nous avons travaillé sur le chargement des catégories, donc cela pourrait changer à l’avenir.

3 « J'aime »

Merci pour ces précisions.

Envisageriez-vous au moins de rendre CategoryList::CATEGORIES_PER_PAGE ou CategoryList::MAX_UNOPTIMIZED_CATEGORIES configurables d’une manière ou d’une autre ? Même un réglage de site caché conviendrait dans mon cas.

Écrire du code de plugin pour les remplacer est quelque peu disgracieux car je ne trouve aucun autre moyen que le “monkey patching” de CategoryList, ce qui me semble extrêmement fragile.

Entrer dans le monde du « monkey patching » n’est certainement pas idéal.

Cela dit, je serais préoccupé par le fait de tripoter CategoryList::MAX_UNOPTIMIZED_CATEGORIES, nous l’avons choisi car les choses deviennent problématiques à des nombres plus élevés. CategoryList::CATEGORIES_PER_PAGE, cependant, pourrait probablement être augmenté confortablement jusqu’à 100.

@nbianca / @hugh des réflexions ici ?

2 « J'aime »

Ceci est un bug que je viens de corriger ici :

Nous avons introduit cette fonctionnalité car les sites avec plus de 1 000 catégories avaient une page “/categories” inutilisable. Malheureusement, cela a introduit un bug car si un site a plus de 1 000 catégories, il essaiera de forcer le chargement paresseux (ou page par page) des sous-catégories également, même lorsque ce n’est pas le cas.

3 « J'aime »