この件で行き詰まっています。特定のトピックからカテゴリルートにリダイレクトしたいと考えています。以下のようなものです。
/t/slug/123 => /c/slug/456
管理画面のパーマリンクは既存のDiscourseのURLを対象としていないことは承知しており、カスタムコードで対応できることも理解しています。どなたか、方向性を示すような例を教えていただけますでしょうか?
よろしくお願いします!
この件で行き詰まっています。特定のトピックからカテゴリルートにリダイレクトしたいと考えています。以下のようなものです。
/t/slug/123 => /c/slug/456
管理画面のパーマリンクは既存のDiscourseのURLを対象としていないことは承知しており、カスタムコードで対応できることも理解しています。どなたか、方向性を示すような例を教えていただけますでしょうか?
よろしくお願いします!
解決策をまとめたのですが、機能しているようです。正しく行いましたか、それともひどいことをしていますか? ![]()
<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>
パーマリンクではこれができないのですか?
「外部リンクまたは相対URL」オプション(ただし、もっと良いものがあるかもしれませんが)を使用して簡単なテストを行ったところ、うまくいったようです。
削除されたトピック/投稿を表示する権限を持たないユーザーでテストすることを忘れないでください。
トピックは削除されませんが、ナビゲーションツールとしてピン留めする必要があります。これをテストしたところ、パーマリンクは既存のURLでは機能しないようですが、そうではありませんか?
ああ、いや。パーマリンクはトピックが削除された場合にのみ機能し、それ以外の場合はリダイレクトされず、成功したURLに着地します。