Категории отсутствуют в `categories.json`, хотя присутствуют в системе (пользовательская тема)

Мы создали пользовательскую тему Discourse, в которой с помощью JavaScript на главной странице отображаются определённые категории. Скрипт использует заранее определённый список названий категорий (в виде массива, разделённого запятыми) для получения и отображения контента из /categories.json.

Хотя большинство категорий отображаются корректно, несколько из них отсутствуют на главной странице, даже если они явно указаны в скрипте и существуют в системе с валидными идентификаторами категорий.

При проверке ответа /categories.json мы обнаружили, что эти конкретные категории вообще не включены в вывод API. Однако они:

  • Существуют в экземпляре Discourse
  • Являются категориями верхнего уровня
  • Имеют для группы everyone как минимум разрешение «Просмотр» (See)
  • Не являются архивированными, скрытыми или вложенными

Мы пытаемся понять:

  1. При каких условиях Discourse исключает категории из categories.json?
  2. Как обеспечить появление всех необходимых категорий в этом ответе, особенно если мы хотим отображать их на главной странице с помощью пользовательского кода?

Будем признательны за любые разъяснения или рекомендуемые решения.

Не уверен, но это на /latest? Возможно, там включены только категории, у которых есть темы в списке тем?

Это на последней версии Discourse, и там пока нет тем… Я попытался создать одну тестовую тему в одной из невидимых категорий по её ID, предполагая, что это вызовет вывод JSON с категориями для их отображения, но это не помогло. Поэтому я также удалил тестовую тему… В настоящее время в обеих категориях нет тем…

Похоже, я прав. Было бы глупо отправлять через latest целый набор категорий, которые не используются при сбое. Я бы поступил так: либо зашил нужные категории в код, либо вынес их в настройки темы.

Также можно сделать Ajax-запрос, но это замедлит работу.

Кстати, я только что создал пустую категорию и вижу её в моём /categories.json

Понятно. Я думаю, что если вы получите этот эндпоинт, он будет содержать категории, но категории, включенные в /latest, вероятно, относятся только к тем, которые нужны для этих тем.

Наверное, я запутался. :melting_face: Мне показалось, что /categories.json по какой-то неизвестной причине не включает определённые категории, и я подумал, что попробую исключить варианты, где нет тем, как возможную причину.

Не обращайте на меня внимания… :slight_smile:

Неясно, кто именно запутался. И мы оба можем быть правы. Всё ещё неясно, на что именно смотрел автор оригинального поста.

Спасибо, Pfaffman, JammyDodger. Поскольку мы используем кастомизированную тему, мы попытались добавить несколько ранее скрытых категорий на главную страницу, добавив их к существующему списку отображаемых категорий в нашем JavaScript. Мы уже успешно отображаем пять категорий этим методом. Однако добавление этих двух дополнительных категорий не приводит к их появлению на главной странице. Для устранения проблемы мы даже попробовали создать тему в одной из них, чтобы проверить, отобразится ли она, но это не дало результата.

Вы могли бы поделиться своим кодом, возможно, предоставив ссылку на GitHub

Включение ленивой загрузки решило проблему с отображением категорий, которые ранее были не видны. Не уверен, как это связано… Однако это подразумевает, что с правами доступа к категориям проблем нет. Корневая причина этой проблемы всё ещё не найдена.

Этот код ленивой загрузки, как я понимаю, спроектирован так, чтобы не отправлять категории, которые, по его мнению, не требуют отправки. Не уверен, как убедить его отправить все категории.