Estou tentando alterar o roteador padrão da lista de tópicos da página inicial, mas ainda não encontrei nenhuma maneira de fazer isso! Espero que vocês possam me ajudar.
Estou tentando mudar de “Mais recentes” para “Acompanhando” (seriam tópicos criados pelos usuários que estou acompanhando).
Métodos que já tentei:
A maneira mais eficiente seria adicionar um menu superior “Acompanhando”, mas não funcionou.
Outra forma foi instalar Custom Top Navigation Links. Isso me permitiu adicionar links de navegação no controle, mas o caminho da rota “/” (raiz) ainda está exibindo “Mais recentes”.
Outra foi manipulando o arquivo “discourse/app/routes/app-route-map.js”, onde estão definidos os “filtros”. Mas isso também não funcionou.
this.route("discovery", { path: "/", resetNamespace: true }, function () {
Meu objetivo:
Alterar a lista de tópicos que aparece em “http://localhost:3000/” de “Mais recentes” para “Acompanhando”, o que é possível graças a Discourse Follow. Como essa rota já existe, se eu acessar “/following” funciona, mas eu queria que essa rota fosse executada no caminho “/”.
É possível!?
Espero que vocês me ajudem!
Atenciosamente,
Felipe
Aqui, adicionei os Favoritos como uma possível visualização padrão:
A parte mais difícil foi adicionar os casos de teste!
Eu consideraria isso como um PR para o plugin. A parte complicada é que atualmente ele só aparece se houver algo para mostrar… então você precisaria considerar isso…
Não funcionou. Achei que, com essas alterações, seria possível escolher as configurações do site “Top menu”. Então, se “latest” for obrigatório, eu colocaria “following” - “latest” em sequência, assim a home seria redirecionada para “following”.
Encontrei uma solução durante o desenvolvimento usando:
import { setDefaultHomepage } from 'discourse/lib/utilities';
Então, no meu componente, no início, adicionei:
setDefaultHomepage("following");
Isso porque no Rails Console encontrei uma variável SiteSetting.homepage que estava definida como “latest”.
E funcionou !
Você vê algum problema nisso?
Tenho medo de carregar “latest” do backend e que o initializer seja carregado no lado do cliente.
Não, você não poderá alterar o arquivo Ruby diretamente. Foi apenas uma dica. Afinal, você não estará enviando um PR para o core como eu estava fazendo naquele caso. Você terá que encontrar uma maneira de fazer essa alteração no inicializador do plugin, no plugin.rb, eu suspeito… Isso será uma mudança no plugin, não no core.
Haha, bem, essa é uma maneira de fazer, mas realmente você deveria adicioná-lo como uma opção e sempre dar ao usuário a possibilidade de alterá-lo… pelo menos se quiser que isso seja mesclado no plugin