Comment rediriger un sujet spécifique vers une catégorie ?

Je suis un peu bloqué sur celui-ci : j’aimerais rediriger d’un sujet spécifique vers une route de catégorie, quelque chose comme ceci :

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

Je réalise que les permaliens dans l’administration ne sont pas destinés aux URL Discourse existantes, et que cela pourrait être fait avec du code personnalisé. Quelqu’un a-t-il un exemple pour m’orienter dans la bonne direction ?

Merci !

1 « J'aime »

Ok, j’ai bricolé une solution et elle semble fonctionner. Ai-je bien fait, ou fais-je des choses terribles ? :see_no_evil:

<script type="text/discourse-plugin" version="0.8"> 
    // Modifier la route du sujet. 
    api.modifyClass('route:topic', {
    
      beforeModel( transition ) {
        var params = this.paramsFor('topic');

        // Anglais
        if( params['id'] == 123 ) {
          this.router.transitionTo('/c/tutorials/english/29'); // Avorte implicitement la transition en cours.
        }
        
        // Français
        if( params['id'] == 456 ) {
          this.router.transitionTo('/c/tutorials/french/30'); // Avorte implicitement la transition en cours.
        }
                
      }
    
    });
</script>
1 « J'aime »

Pouvez-vous ne pas faire cela avec les permaliens ?

J’ai fait un test rapide en utilisant l’option « URL externe ou relative » (bien qu’il puisse y en avoir une meilleure), et cela a semblé fonctionner correctement ?

Assurez-vous simplement de tester avec un utilisateur qui n’a pas la capacité de voir les sujets/messages supprimés.

2 « J'aime »

Mes sujets ne sont pas supprimés, j’ai juste besoin qu’ils soient épinglés comme outil de navigation. J’ai testé cela et les Permalinks ne fonctionnent pas pour les URL existantes, n’est-ce pas ?

Ah, non. Les permaliens ne fonctionneraient que si le sujet est supprimé, sinon vous ne serez pas redirigé et atterrirez sur l’URL de succès.