2016-04-29 4 views
0

をリダイレクトし、それはとても好きにナビゲートされるタブがありますオーディオSilverStripeが動的にページを作成3.1+すると、私はページタイプ 'ProductPage' を持っている

/ProductPageUrlSegment /?タブ=写真

各新製品のページが作成されたときにリダイレクトを作成するためにあなたが/ProductPageUrlSegment /ビデオをナビゲートあれば、それが行くように、私が欲しいです/ProductPageUrlSegment /?tab = video

すべてのタブで同じです。

public function LinkVideo() { 
    return $this->Link()->'/?=video' . '#' . $this->URLSegment->'/video'; 
} 
:私は私のようなものになるだろう

親ページに行くどの
public function Link() { 
    return $this->Parent()->Link() . '#' . $this->URLSegment; 
} 

私はhttps://docs.silverstripe.org/en/3.3/developer_guides/controllers/routing/またはリダイレクトhttps://docs.silverstripe.org/en/3.3/developer_guides/controllers/redirection/

ルーティング使用する必要がある場合は明確ではないよ、私は別のプロジェクトのためのリンク機能を持っています

私はこのことを理解するための知識がないので、ガイダンスは高く評価されています。返信用

答えて

4

これは、しかし、取得変数が設定された、アクションとしてURLを処理して、同じページにリダイレクトすることによって、上記目的を達成します...

class ProductPage extends Page { 

} 

class ProductPage_Controller extends Page_Controller { 

    private static $allowed_actions = array(
     'video', 
     'audio', 
     'photos', 
    ); 

    public function video() { 
     $this->redirect($this->Link().'?tab=video'); 
    } 
    public function audio() { 
     $this->redirect($this->Link().'?tab=audio'); 
    } 
    public function photos() { 
     $this->redirect($this->Link().'?tab=photos'); 
    } 
} 
+0

ありがとう!残念ながら私はこのエラーが発生しています:「ページを開く際にリダイレクトが多すぎます」このページは即座に「/?tab = video」に移動しようとしているので、製品のURLに移動するだけで済みます。ナビゲートされ、/ videosなどが入力されたときだけリダイレクトされます。 – pinkp

+0

あなたの答えは他のページでも動作しますが、私の製品ページでは動作しません。 – pinkp

+0

私の場合の「ビデオ」のアクションの1つが、$ has_manyリレーションシップとGridFieldのいずれかと一致し、矛盾しているように見え、すべての動作を変更したか、リレーションシップを変更できると思います。 – pinkp

関連する問題