У меня есть тип страницы «ProductPage», у него есть вкладки, которые можно перемещать так:
/ ProductPageUrlSegment /? = Вкладка видео
/ ProductPageUrlSegment /? = Вкладка аудио
/ ProductPageUrlSegment /? = вкладка фотографии
Я хотел бы, чтобы редиректы создавались при создании каждой новой страницы продукта, чтобы при навигации / ProductPageUrlSegment / video она переходила к / ProductPageUrlSegment /? Tab = video
и то же самое для всех вкладок. Я не понимаю, следует ли использовать маршрутизацию https://docs.silverstripe.org/en/3.3/developer_guides/controllers/routing/ или перенаправление https://docs.silverstripe.org/en/3.3/developer_guides/controllers / перенаправление /
У меня есть функция ссылки для другого проекта, который идет на родительскую страницу
public function Link() { return $this->Parent()->Link() . '#' . $this->URLSegment; }
Мой был бы чем-то вроде:
public function LinkVideo() { return $this->Link()->'/?=video' . '#' . $this->URLSegment->'/video'; }
У меня нет знаний, чтобы справиться с этим, поэтому любое руководство было оценено.
Это позволит достичь вышеуказанного, обработав URL-адрес в качестве действия, а затем перенаправляясь на ту же страницу, но с набором переменных get …
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'); } }