1,000カテゴリを超えるサイトでのサブカテゴリ表示の問題

1,000 を超えるカテゴリを持つサイトをホストしています。このサイトのコミュニティは、たとえばタグではなく、カテゴリを使用して意味的な分離を行うことを好みます。

これは比較的うまくいっていますが、最近問題が発生しました(いつからかはわかりません)。

20 を超えるサブカテゴリがあり、「Boxes」を使用してサブカテゴリリンク要素をレンダリングするカテゴリビューにアクセスすると、リストに(最初の?)20 のカテゴリのみが表示されます。
details ドロップダウン選択要素をクリックすると、完全なリストが表示されます

最初の調査で、1,000 を超えるカテゴリを持つサイトの処理に関する動作が含まれている discourse/app/models/category_list.rb at main · discourse/discourse · GitHub に遭遇しました。

カテゴリリストを受け取り、ページネーションしないビュー discourse/app/views/categories/index.html.erb at main · discourse/discourse · GitHub の処理方法と組み合わさって、ビューに 20 のサブカテゴリしか表示されない原因となっているのではないかと疑っています。

これは意図された動作ですか?

はい、あなたの疑いは正しいと思います。Discourse は、多くの理由から、何千ものカテゴリを処理するように設計されていませんでした。カテゴリの読み込みに関していくつかの作業を行っており、将来的に変更される可能性があります。

「いいね!」 3

明確にしていただきありがとうございます。

少なくとも CategoryList::CATEGORIES_PER_PAGE または CategoryList::MAX_UNOPTIMIZED_CATEGORIES を何らかの方法で設定可能にすることを検討していただけますでしょうか?私のケースでは、隠しサイト設定でも構いません。

これらの値を置き換えるためにプラグインコードを書くのは、CategoryList をモンキーパッチする以外に方法が見つからず、非常に脆弱に感じるため、少々見栄えが悪いです。

モンキーパッチの世界に足を踏み入れるのは、決して理想的ではありません。

とはいえ、CategoryList::MAX_UNOPTIMIZED_CATEGORIES をいじるのは心配です。数値が高くなると問題が発生するため、この値にしました。しかし、CategoryList::CATEGORIES_PER_PAGE は、100まで快適に引き上げることができるでしょう。

@nbianca / @hugh 何か考えはありますか?

「いいね!」 2

これは私がここで修正したバグです。

この機能は、1,000以上のカテゴリを持つサイトで「/categories」ページが使用できなくなったために導入されました。残念ながら、これによりバグが発生しました。サイトに1,000以上のカテゴリがある場合、サブカテゴリもページネーション(またはページごと)で読み込もうとしますが、実際にはそうではありません。

「いいね!」 3