Problema nella visualizzazione delle sottocategorie per siti con più di 1.000 categorie

Sto ospitando un sito che ha più di 1.000 categorie. La community per cui è in esecuzione preferisce utilizzare le categorie per la separazione semantica rispetto, ad esempio, ai tag.

Questo sta funzionando ragionevolmente bene, tuttavia, ho riscontrato un problema di recente (e non sono sicuro da quando è iniziato):

La navigazione in una vista di categoria che ha più di 20 sottocategorie e utilizza “Box” per renderizzare gli elementi di collegamento delle sottocategorie, renderizza solo (le prime?) 20 categorie nell’elenco.
Fare clic sull’elemento di selezione a discesa details mostra l’elenco completo.

Dalla mia indagine iniziale, ho incontrato discourse/app/models/category_list.rb at main · discourse/discourse · GitHub e come ha un certo comportamento riguardo alla gestione dei siti che hanno più di 1.000 categorie.

Sospetto che insieme a come la vista discourse/app/views/categories/index.html.erb at main · discourse/discourse · GitHub gestisce l’elenco delle categorie che riceve, e non impagina, causi la visualizzazione di sole 20 sottocategorie.

Questo è il comportamento previsto?

Sì, penso che tu abbia perfettamente ragione nel tuo sospetto. Discourse non è stato progettato per gestire migliaia di categorie, per molte ragioni. Abbiamo fatto alcuni lavori sul caricamento delle categorie, quindi ciò potrebbe cambiare in futuro.

3 Mi Piace

Grazie per il chiarimento.

Prenderesti in considerazione almeno di rendere CategoryList::CATEGORIES_PER_PAGE o CategoryList::MAX_UNOPTIMIZED_CATEGORIES configurabili in qualche modo? Anche un’impostazione del sito nascosta andrebbe bene nel mio caso.

Scrivere codice di plugin per sostituirli è alquanto brutto poiché non riesco a trovare un altro modo se non il monkey patching di CategoryList, che sembra estremamente fragile.

Entrare nel mondo del monkey patching non è certamente l’ideale.

Detto questo, sarei preoccupato di armeggiare con CategoryList::MAX_UNOPTIMIZED_CATEGORIES, l’abbiamo scelto perché le cose diventano problematiche con numeri più alti. CategoryList::CATEGORIES_PER_PAGE invece potrebbe probabilmente essere tranquillamente aumentato a 100.

@nbianca / @hugh avete qualche pensiero a riguardo?

2 Mi Piace

Questo è un bug che ho appena corretto qui:

Abbiamo introdotto questa funzionalità perché i siti con oltre 1.000 categorie avevano una pagina “/categories” inutilizzabile. Sfortunatamente, ciò ha introdotto un bug perché se un sito ha più di 1.000 categorie, tenterà di forzare il caricamento lazy (o pagina per pagina) anche delle sottocategorie, anche quando non è il caso.

3 Mi Piace