Aby wyświetlić dany post, generujemy mniej więcej taki link za pomocą helpera html:
http://domena.pl/posts/show/23
Powiedzmy, że chcemy być SEO friendly i doklejamy na końcu tytuł postu:
http://domena.pl/posts/show/23/bardziej_przyjazne_linki_w_cakephp
Niby wszystko ładnie, pięknie, ale słowa posts i show w adresie zmniejszają siłę pozostałych słów, i strona będzie się pozycjonować w google gorzej np. na słowa linki + cakephp.
Lepszym byłby link:
http://domena.pl/23/bardziej_przyjazne_linki_w_cakephp
Można łatwo sprawić, żeby tak to działało, bez większych problemów.
Przede wszystkim edytujemy app/config/routes.php
i dodajemy do nich linię:
$Route->connect('/:id/*', array('controller' => 'posts', 'action' => 'show'));
dzięki temu zabiegowi ruter będzie nam linkował adresy w takiej postaci do kontrolera posts, metody show.
Teraz należy zmodyfikować metodę show, aby działała przy takim przekierowaniu:
1. umożliw wywołanie funkcji bez podania parametru id:
function show($id=null){
2. w wypadku nowego przekierowania id znajduje się w $this->params['id'] :
$id = (isset($this->params['id']))? $this->params['id']: $id;
Bardzo fajnie, ale teraz przestaje działać stary (standardowy) sposób przekierowania taki adres:
http://domena.pl/posts/show/23
zwróci błąd missing controller.
Łatwo temu zaradzić dodając jeszcze jedną linię w pliku routes.php:
$Route->connect('/static_pages/view/:id/*', array('controller' => 'static_pages', 'action' => 'view'));
Koniecznie powyżej tej poprzednio dodanej!
Brak komentarzy:
Prześlij komentarz