av203
(Avi N)
1
我正在托管一个拥有 1,000 多个类别的网站。该社区运行的网站更喜欢使用类别进行语义分离,而不是使用标签。
这运行得相当好,但是,我最近遇到了一个问题(我不确定它是什么时候开始的):
浏览一个拥有 20 多个子类别并且使用“Boxes”来渲染子类别链接元素的类别视图时,列表中只显示(第一个?)20 个类别。
点击 details 下拉选择元素会显示完整的列表。
根据我的初步调查,我遇到了 discourse/app/models/category_list.rb at main · discourse/discourse · GitHub 以及它如何处理拥有 1,000 多个类别的网站的一些行为。
我怀疑视图 discourse/app/views/categories/index.html.erb at main · discourse/discourse · GitHub 如何处理它接收到的类别列表,并且不进行分页,导致视图只显示 20 个子类别。
这是预期行为吗?
HAWK
(Hawk)
2
是的,我认为你的怀疑是对的。Discourse 的设计初衷并不是为了处理数千个类别,原因有很多。我们一直在对类别加载进行一些工作,未来可能会有所改变。
3 个赞
av203
(Avi N)
3
感谢您的澄清。
您是否会考虑至少以某种方式使 CategoryList::CATEGORIES_PER_PAGE 或 CategoryList::MAX_UNOPTIMIZED_CATEGORIES 可配置?即使是隐藏的站点设置在我的情况下也适用。
编写插件代码来替换它们有点难看,因为我找不到其他方法,只能通过 monkey patching CategoryList 来实现,这感觉非常脆弱。
sam
(Sam Saffron)
4
Monkey patching 的世界当然不是理想的选择。
话虽如此,但我担心会去修改 CategoryList::MAX_UNOPTIMIZED_CATEGORIES,我们选择这个值是因为数量再多就会出现问题。不过 CategoryList::CATEGORIES_PER_PAGE 应该可以轻松地提高到 100。
@nbianca / @hugh 有什么想法吗?
2 个赞
nbianca
(Bianca)
6
我已经修复了一个 Bug:
我们引入此功能是为了解决拥有超过 1000 个分类的站点,“/categories”页面无法使用的问题。但不幸的是,这引入了一个 Bug,即如果一个站点有超过 1000 个分类,它将尝试强制子分类也进行懒加载(或分页),即使并非如此。
3 个赞