Я размещаю сайт, на котором более 1000 категорий. Сообщество, для которого он работает, предпочитает использовать категории для семантического разделения, а не, например, теги.
Это работает вполне нормально, однако недавно я столкнулся с проблемой (и не уверен, когда она появилась):
При переходе к просмотру категории, в которой более 20 подкатегорий и для отображения элементов ссылок на подкатегории используется «Boxes», в списке отображается только (первые?) 20 категорий.
При нажатии на выпадающий список detailsотображается полный список.
Да, я думаю, что ваши подозрения абсолютно верны. Discourse не был спроектирован для работы с тысячами категорий по многим причинам. Мы проводим работу над загрузкой категорий, так что в будущем это может измениться.
Не могли бы вы хотя бы сделать CategoryList::CATEGORIES_PER_PAGE или CategoryList::MAX_UNOPTIMIZED_CATEGORIES настраиваемыми каким-либо образом? Даже скрытая настройка сайта подошла бы в моём случае.
Написание кода плагина для замены этих значений выглядит не очень красиво, так как я не нахожу другого способа, кроме как использовать monkey patching для CategoryList, что кажется крайне ненадёжным.
Вход в мир monkey patching, безусловно, не идеален.
Тем не менее, я бы опасался возиться с CategoryList::MAX_UNOPTIMIZED_CATEGORIES, мы выбрали это значение, потому что при больших числах возникают проблемы. CategoryList::CATEGORIES_PER_PAGE же, вероятно, можно без проблем увеличить до 100.
@nbianca / @hugh, есть какие-то мысли по этому поводу?
Мы внедрили эту функцию, потому что на сайтах с более чем 1000 категориями страница «/categories» становилась непригодной для использования. К сожалению, это привело к ошибке: если на сайте более 1000 категорий, система пытается принудительно включить ленивую загрузку (или постраничную) также для подкатегорий, даже когда это не требуется.