Categorias ausentes em `categories.json` apesar de existirem no sistema (Tema personalizado)

Criamos um tema personalizado do Discourse onde categorias específicas são exibidas na página inicial usando JavaScript. O script utiliza uma lista predefinida de nomes de categorias (como um array separado por vírgulas) para buscar e renderizar conteúdo de /categories.json.

Enquanto a maioria das categorias está sendo exibida corretamente, algumas estão ausentes na página inicial — embora estejam explicitamente listadas no script e existam no sistema com IDs de categoria válidos.

Ao inspecionar a resposta de /categories.json, descobrimos que essas categorias específicas não estão incluídas na saída da API de forma alguma. No entanto, elas:

  • Existem na instância do Discourse
  • São categorias de nível superior
  • Têm everyone configurado com pelo menos permissões de “Ver”
  • Não estão arquivadas, ocultas ou aninhadas

Estamos tentando entender:

  1. Sob quais condições o Discourse omite categorias de categories.json?
  2. Como podemos garantir que todas as categorias necessárias apareçam nessa resposta, especialmente se queremos exibi-las na página inicial via código personalizado?

Qualquer insight ou solução recomendada seria apreciada.

Não sei, mas isso está em /latest? Talvez inclua apenas categorias que tenham tópicos na lista de tópicos?

1 curtida

isto está na versão mais recente do discourse e ainda não tem nenhum tópico… Tentei criar um tópico fictício em uma das categorias invisíveis com base no ID da categoria, presumindo que isso invocaria o JSON das categorias para listá-las, mas não ajudou e, portanto, também excluí o tópico fictício… Atualmente, ambas as categorias não têm nenhum tópico…

Parece que estou certo. Seria bobo ter a última versão enviando um monte de categorias que não são usadas na interrupção. Acho que o que eu faria seria codificar as categorias que você quer ou colocá-las em uma configuração de tema.

Você também poderia fazer uma chamada Ajax, mas isso tornaria as coisas mais lentas.

Para que conste, acabei de criar uma categoria vazia e consigo vê-la em meu /categories.json

Certo. Acho que se você conseguir aquele endpoint, ele terá categorias, mas as categorias incluídas em /latest são provavelmente apenas aquelas necessárias para esses tópicos.

1 curtida

Acho que me confundi. :melting_face: Pensei que era sobre o /categories.json não incluir certas categorias por um motivo desconhecido e pensei em tentar eliminar aquelas sem tópicos como causa.

Não se preocupe comigo… :slight_smile:

1 curtida

Não está claro que fui eu quem se confundiu. E nós dois podemos estar certos. Ainda não entendi o que o OP estava olhando.

1 curtida

Obrigado Pfaffman, JammyDodger. Como estamos usando um tema personalizado, tentamos adicionar algumas categorias anteriormente ocultas à página inicial, anexando-as à lista existente de categorias expostas em nosso JavaScript. Já temos cinco categorias exibidas corretamente usando esse método. No entanto, adicionar essas duas categorias adicionais não faz com que elas apareçam na página inicial. Para fazer uma solução de problemas, até tentamos postar um tópico em uma delas para ver se isso acionaria a visibilidade, mas não teve efeito.

Você pode compartilhar seu código, talvez vinculando ao github

2 curtidas

Ao habilitar o carregamento preguiçoso, resolvi esse problema para exibir as categorias que não eram visíveis anteriormente… Não tenho certeza de como isso está relacionado… No entanto, isso implica que as categorias não têm problema de permissão… ainda não encontrei a causa raiz para resolver esse problema.

Acredito que o código de carregamento preguiçoso foi projetado para não enviar categorias que ele acha que não precisam ser enviadas. Não tenho certeza de como convencê-lo de que você quer todas as categorias.