如何将特定主题重定向到某个类别?

我在这方面有点卡住了:我想从一个特定的主题重定向到一个类别路由,类似这样:

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

我意识到管理员中的固定链接并非用于现有的 Discourse URL,并且这可以通过一些自定义代码来完成。有人能给我指个方向吗?

谢谢!

1 个赞

好的,我已经拼凑了一个解决方案,似乎可行。我这样做对吗,还是我在做一些糟糕的事情? :see_no_evil:

<script type="text/discourse-plugin" version="0.8"> 
    // 修改主题路由。 
    api.modifyClass('route:topic', {
    
      beforeModel( transition ) {
        var params = this.paramsFor('topic');

        // 英语
        if( params['id'] == 123 ) {
          this.router.transitionTo('/c/tutorials/english/29'); // 隐式中止正在进行的转换。
        }
        
        // 法语
        if( params['id'] == 456 ) {
          this.router.transitionTo('/c/tutorials/french/30'); // 隐式中止正在进行的转换。
        }
                
      }
    
    });
</script>
1 个赞

您不能使用固定链接来执行此操作吗?

我已经使用“外部或相对 URL”选项进行了快速测试(尽管可能有更好的选项),它似乎运行正常?

只需确保使用没有权限查看已删除主题/帖子的用户进行测试。

2 个赞

我的主题没有被删除,我只是需要将它们固定作为导航工具。我测试过,固定链接对现有网址不起作用,对吗?

啊,不对。永久链接仅在主题被删除时才有效,否则您将不会被重定向,而是会登陆到成功网址。