Categorías faltantes en `categories.json` a pesar de existir en el sistema (Tema personalizado)

Hemos creado un tema personalizado de Discourse donde algunas categorías específicas se muestran en la página de inicio usando JavaScript. El script utiliza una lista predefinida de nombres de categorías (como un array separado por comas) para obtener y renderizar contenido desde /categories.json.

Mientras que la mayoría de las categorías se muestran correctamente, algunas faltan en la página principal, aunque están explícitamente listadas en el script y existen en el sistema con IDs de categoría válidos.

Al inspeccionar la respuesta de /categories.json, encontramos que estas categorías específicas no están incluidas en la salida de la API en absoluto. Sin embargo, ellas:

  • Existen en la instancia de Discourse
  • Son categorías de nivel superior
  • Tienen everyone configurado con al menos permisos de “Ver”
  • No están archivadas, ocultas o anidadas

Estamos tratando de entender:

  1. ¿Bajo qué condiciones Discourse omite categorías de categories.json?
  2. ¿Cómo podemos asegurarnos de que todas las categorías necesarias aparezcan en esa respuesta, especialmente si queremos mostrarlas en la página principal mediante código personalizado?

Agradeceríamos cualquier consejo o solución recomendada.

No estoy seguro, pero ¿está esto en /latest? ¿Quizás solo incluye categorías que tienen temas en la lista de temas?

1 me gusta

esta es la última versión de discourse y aún no tiene temas… Intenté crear un tema ficticio en una de las categorías invisibles basándome en el ID de la categoría, presumiendo que esto invocaría el JSON de las categorías para listarlas, pero no ayudó y, por lo tanto, también eliminé el tema ficticio… actualmente ambas categorías no tienen temas…

Suena a que tengo razón. Sería una tontería que latest enviara un montón de categorías que no se usan en la interrupción. Creo que lo que haría sería codificar las categorías que quieres o ponerlas en una configuración del tema.

También podrías hacer una llamada Ajax, pero eso ralentizaría las cosas.

Para que conste, acabo de crear una categoría vacía y puedo verla en mi /categories.json

Bien. Creo que si obtienes ese endpoint, tendrá categorías, pero las categorías incluidas en /latest probablemente solo sean las necesarias para esos temas.

1 me gusta

Creo que me he confundido. :melting_face: Pensé que se trataba de que /categories.json no incluía ciertas categorías por una razón desconocida y pensé que intentaría descartar las que no tuvieran temas como causa.

No me hagas caso… :slight_smile:

1 me gusta

No está claro que yo sea quien se confundió. Y ambos podemos tener razón. Todavía no está claro qué era lo que el OP estaba mirando.

1 me gusta

Gracias Pfaffman, JammyDodger. Dado que estamos utilizando un tema personalizado, intentamos añadir algunas categorías previamente ocultas a la página de inicio añadiéndolas a la lista existente de categorías expuestas en nuestro JavaScript. Ya tenemos cinco categorías que se muestran correctamente utilizando este método. Sin embargo, al añadir estas dos categorías adicionales, no aparecen en la página de inicio. Para solucionar el problema, incluso intentamos publicar un tema en una de ellas para ver si eso activaba la visibilidad, pero no tuvo ningún efecto.

Podrías compartir tu código, quizás enlazando a GitHub

2 Me gusta

Habilitar la carga diferida, resolvió este problema para mostrar las categorías que anteriormente no eran visibles..No estoy seguro de cómo está relacionado… Sin embargo, implica que las categorías no tienen ningún problema de permisos.. todavía no he encontrado la causa raíz para resolver este problema.

Ese código de carga diferida, creo, está diseñado para no enviar categorías que piensa que no necesitan ser enviadas. No estoy seguro de cómo convencerlo de que quieres todas las categorías.