Como redirecionar um tópico específico para uma categoria?

Estou um pouco preso nisso: gostaria de redirecionar de um tópico específico para uma rota de categoria, algo como isto:

/t/slug/123 => /c/slug/456

Percebo que os permalinks no admin não são para URLs existentes do Discourse, e que isso poderia ser feito com algum código personalizado. Alguém tem um exemplo para me direcionar na direção certa?

Obrigado!

1 curtida

Ok, montei uma solução e parece que funciona. Fiz isso corretamente ou estou fazendo coisas terríveis? :see_no_evil:

<script type="text/discourse-plugin" version="0.8"> 
    // Modifica a rota do tópico. 
    api.modifyClass('route:topic', {
    
      beforeModel( transition ) {
        var params = this.paramsFor('topic');

        // Inglês
        if( params['id'] == 123 ) {
          this.router.transitionTo('/c/tutorials/english/29'); // Aborta implicitamente a transição em andamento.
        }
        
        // Francês
        if( params['id'] == 456 ) {
          this.router.transitionTo('/c/tutorials/french/30'); // Aborta implicitamente a transição em andamento.
        }
                
      }
    
    });
</script>
1 curtida

Você não pode fazer isso com os permalinks?

Eu fiz um teste rápido usando a opção ‘URL externa ou relativa’ (embora possa haver uma melhor), e pareceu funcionar bem?

Apenas certifique-se de testar com um usuário que não tenha a capacidade de ver tópicos/posts excluídos.

2 curtidas

Meus tópicos não são excluídos, eu só preciso que eles sejam fixados como uma ferramenta de navegação. Testei isso e Permalinks não funcionam para URLs existentes, funcionam?

Ah, não. Permalinks só funcionariam se o tópico fosse excluído, caso contrário, você não seria redirecionado e acessaria a URL de sucesso.