Мы создали пользовательскую тему Discourse, в которой с помощью JavaScript на главной странице отображаются определённые категории. Скрипт использует заранее определённый список названий категорий (в виде массива, разделённого запятыми) для получения и отображения контента из /categories.json.
Хотя большинство категорий отображаются корректно, несколько из них отсутствуют на главной странице, даже если они явно указаны в скрипте и существуют в системе с валидными идентификаторами категорий.
При проверке ответа /categories.json мы обнаружили, что эти конкретные категории вообще не включены в вывод API. Однако они:
Существуют в экземпляре Discourse
Являются категориями верхнего уровня
Имеют для группы everyone как минимум разрешение «Просмотр» (See)
Не являются архивированными, скрытыми или вложенными
Мы пытаемся понять:
При каких условиях Discourse исключает категории из categories.json?
Как обеспечить появление всех необходимых категорий в этом ответе, особенно если мы хотим отображать их на главной странице с помощью пользовательского кода?
Будем признательны за любые разъяснения или рекомендуемые решения.
Это на последней версии Discourse, и там пока нет тем… Я попытался создать одну тестовую тему в одной из невидимых категорий по её ID, предполагая, что это вызовет вывод JSON с категориями для их отображения, но это не помогло. Поэтому я также удалил тестовую тему… В настоящее время в обеих категориях нет тем…
Похоже, я прав. Было бы глупо отправлять через latest целый набор категорий, которые не используются при сбое. Я бы поступил так: либо зашил нужные категории в код, либо вынес их в настройки темы.
Также можно сделать Ajax-запрос, но это замедлит работу.
Понятно. Я думаю, что если вы получите этот эндпоинт, он будет содержать категории, но категории, включенные в /latest, вероятно, относятся только к тем, которые нужны для этих тем.
Наверное, я запутался. Мне показалось, что /categories.json по какой-то неизвестной причине не включает определённые категории, и я подумал, что попробую исключить варианты, где нет тем, как возможную причину.
Спасибо, Pfaffman, JammyDodger. Поскольку мы используем кастомизированную тему, мы попытались добавить несколько ранее скрытых категорий на главную страницу, добавив их к существующему списку отображаемых категорий в нашем JavaScript. Мы уже успешно отображаем пять категорий этим методом. Однако добавление этих двух дополнительных категорий не приводит к их появлению на главной странице. Для устранения проблемы мы даже попробовали создать тему в одной из них, чтобы проверить, отобразится ли она, но это не дало результата.
Включение ленивой загрузки решило проблему с отображением категорий, которые ранее были не видны. Не уверен, как это связано… Однако это подразумевает, что с правами доступа к категориям проблем нет. Корневая причина этой проблемы всё ещё не найдена.
Этот код ленивой загрузки, как я понимаю, спроектирован так, чтобы не отправлять категории, которые, по его мнению, не требуют отправки. Не уверен, как убедить его отправить все категории.