Problema de vista en subcategorías para sitios con más de 1.000 categorías

Estoy alojando un sitio que tiene más de 1000 categorías. La comunidad para la que se está ejecutando prefiere usar categorías para la separación semántica en lugar de, por ejemplo, etiquetas.

Esto está funcionando razonablemente bien, sin embargo, me encontré con un problema recientemente (y no estoy seguro de cuándo comenzó):

Navegar a una vista de categoría que tiene más de 20 subcategorías y utiliza “Boxes” para renderizar los elementos de enlace de subcategoría, solo renderiza (las primeras?) 20 categorías en la lista.
Hacer clic en el elemento de selección desplegable details muestra la lista completa.

De mi investigación inicial, me encontré con discourse/app/models/category_list.rb at main · discourse/discourse · GitHub y cómo tiene cierto comportamiento en torno al manejo de sitios que tienen más de 1000 categorías.

Sospecho que, junto con la forma en que la vista discourse/app/views/categories/index.html.erb at main · discourse/discourse · GitHub maneja la lista de categorías que recibe, y no pagina, hace que la vista muestre solo 20 subcategorías.

¿Es este el comportamiento esperado?

Sí, creo que tienes toda la razón con tu sospecha. Discourse no fue diseñado para manejar miles de categorías, por muchas razones. Hemos estado trabajando en la carga de categorías, por lo que eso puede cambiar en el futuro.

3 Me gusta

Gracias por la aclaración.

¿Considerarías al menos hacer que CategoryList::CATEGORIES_PER_PAGE o CategoryList::MAX_UNOPTIMIZED_CATEGORIES sean configurables de alguna manera? Incluso una configuración oculta del sitio funcionaría en mi caso.

Escribir código de plugin para reemplazar estos es algo feo, ya que no encuentro otra forma que no sea el “monkey patching” de CategoryList, lo que se siente extremadamente frágil.

Entrar en el mundo del “monkey patching” ciertamente no es lo ideal.

Dicho esto, me preocuparía manipular CategoryList::MAX_UNOPTIMIZED_CATEGORIES, lo elegimos porque las cosas se vuelven problemáticas con números más altos. Sin embargo, CategoryList::CATEGORIES_PER_PAGE probablemente podría aumentarse cómodamente a 100.

¿@nbianca / @hugh tienen alguna opinión al respecto?

2 Me gusta

Este es un error que acabo de corregir aquí:

Introdujimos esta función porque los sitios con más de 1000 categorías tenían una página “/categories” inutilizable. Desafortunadamente, esto introdujo un error porque si un sitio tiene más de 1000 categorías, intentará forzar la carga diferida (o página por página) de las subcategorías también, incluso cuando no sea el caso.

3 Me gusta