Problema na visualização de subcategorias para sites com mais de 1.000 categorias

Estou hospedando um site que tem mais de 1.000 categorias. A comunidade para a qual ele está rodando prefere usar categorias para separação semântica em vez de, por exemplo, tags.

Isso está funcionando razoavelmente bem, no entanto, encontrei um problema recentemente (e não tenho certeza de quando começou):

Navegar para uma visualização de categoria que tem mais de 20 subcategorias e usa “Boxes” para renderizar os elementos de link da subcategoria, renderiza apenas (as primeiras?) 20 categorias na lista.
Clicar no elemento de seleção do dropdown details mostra a lista completa.

Da minha investigação inicial, encontrei discourse/app/models/category_list.rb at main · discourse/discourse · GitHub e como ele tem algum comportamento em torno do tratamento de sites que têm mais de 1.000 categorias.

Suspeito que, juntamente com a forma como a visualização discourse/app/views/categories/index.html.erb at main · discourse/discourse · GitHub lida com a lista de categorias que recebe, e não pagina, faz com que a visualização mostre apenas 20 subcategorias.

Este é o comportamento pretendido?

Sim, acho que você está certo em sua suspeita. O Discourse não foi projetado para lidar com milhares de categorias, por vários motivos. Temos trabalhado no carregamento de categorias, então isso pode mudar no futuro.

3 curtidas

Obrigado por esclarecer.

Você consideraria pelo menos tornar CategoryList::CATEGORIES_PER_PAGE ou CategoryList::MAX_UNOPTIMIZED_CATEGORIES configuráveis de alguma forma? Mesmo uma configuração oculta do site funcionaria para o meu caso.

Escrever código de plugin para substituir isso é um tanto feio, pois não consigo encontrar outra maneira senão fazer monkey patching em CategoryList, o que parece extremamente frágil.

Entrar no mundo do monkey patching certamente não é o ideal.

Dito isso, eu estaria preocupado em mexer com CategoryList::MAX_UNOPTIMIZED_CATEGORIES, escolhemos isso porque as coisas ficam problemáticas em números maiores. CategoryList::CATEGORIES_PER_PAGE, no entanto, poderia provavelmente ser aumentado confortavelmente para 100.

@nbianca / @hugh alguma opinião aqui?

2 curtidas

Este é um bug que acabei de corrigir aqui:

Introduzimos este recurso porque sites com mais de 1.000 categorias tinham uma página “/categories” inutilizável. Infelizmente, isso introduziu um bug porque, se um site tiver mais de 1.000 categorias, ele tentará forçar o carregamento lento (ou página por página) das subcategorias também, mesmo quando não for o caso.

3 curtidas