É comum que as vezes precisamos mudar o endereço de uma página em particular de nossa aplicação, de forma a ser mais amigável.
Por exemplo, se tivermos "por acaso" uma url da forma
mas a página "secao4" é tão importante, que precisamos facilitar sua escrita na url ( por questões de SEO ) da forma mais simples possível, assim
ou seja, queremos que a url "secao1/secao2/secao3/secao4" tenha o nome "mysection" mas que aponte para "secao1/secao2/secao3/secao4".
Para fazer isso, é muito simples.
Num cenário de exemplo, temos os seguintes links que queremos mudar as urls
e queremos mudar para
Para fazer isso, coloque em seu 'Bootstrap.php'
Explicando: '$link1' é o roteamento do endereço '/secao/subsecao1' para o nome 'mysection1' e 'myroute1' é o nome do roteamento que você irá usar para o zend_navigation.
Sim, se você criou menus com o zend_navigation, vai ter de mudar umas coisinhas se não quiser ter problema.
Supondo que você criou seus menus com um arquivo xml, então você deve ter uma seção para o link '/secao/subsecao1' dessa forma
Agora não têm mistério, basta acrescentar '<route>myroute1</route>' nessa parte de seu xml:
e o link do menu irá pegar o roteamento para 'secao/subsection1'.
Nos outros links do menu, você DEVE acrescentar '<route>default</route>' , pois se não fizer isso, todos os links do menu vão ser roteados para o último router que você definiu no Bootstrap.
Para outros links normais de seu site que apontem para '/secao/subsecao1', não é preciso modificar nada, pois o roteamento é automatico para eles.
Esse roteamento do zend é estático, isso é, apenas para links que não requerem parâmetros. Para outros tipos de roteamento, aguarde próximos artigos.
Até lá =)
Por exemplo, se tivermos "por acaso" uma url da forma
http://meusite.com/secao1/secao2/secao3/secao4
mas a página "secao4" é tão importante, que precisamos facilitar sua escrita na url ( por questões de SEO ) da forma mais simples possível, assim
http://meusite.com/mysection
ou seja, queremos que a url "secao1/secao2/secao3/secao4" tenha o nome "mysection" mas que aponte para "secao1/secao2/secao3/secao4".
Para fazer isso, é muito simples.
Num cenário de exemplo, temos os seguintes links que queremos mudar as urls
http://meusite.com/secao/subsecao1 http://meusite.com/secao/subsecao2 http://meusite.com/secao/subsecao3
e queremos mudar para
http://meusite.com/mysection1 http://meusite.com/mysection2 http://meusite.com/mysection3
Para fazer isso, coloque em seu 'Bootstrap.php'
//
// Inicializa o rotamento pelo bootstrap.
//
protected function _initRouter(){ // Pega a instância do controller. $front_controller = Zend_Controller_Front::getInstance(); $router = $front_controller->getRouter(); // Cria os alias para os roteamentos. $link1 = new Zend_Controller_Router_Route_Static('mysection1',array('controller' => 'secao', 'action' => 'subsecao1') ); $link2 = new Zend_Controller_Router_Route_Static('mysection2',array('controller' => 'secao', 'action' => 'subsecao2') ); $link3 = new Zend_Controller_Router_Route_Static('mysection3',array('controller' => 'secao', 'action' => 'subsecao3') ); // Adiciona as rotas. $router->addRoute('myroute1', $link1); $router->addRoute('myroute2', $link2); $router->addRoute('myroute3', $link3); }
Explicando: '$link1' é o roteamento do endereço '/secao/subsecao1' para o nome 'mysection1' e 'myroute1' é o nome do roteamento que você irá usar para o zend_navigation.
Sim, se você criou menus com o zend_navigation, vai ter de mudar umas coisinhas se não quiser ter problema.
Supondo que você criou seus menus com um arquivo xml, então você deve ter uma seção para o link '/secao/subsecao1' dessa forma
secao subsection1
Agora não têm mistério, basta acrescentar '<route>myroute1</route>' nessa parte de seu xml:
secao subsection1 myroute1
e o link do menu irá pegar o roteamento para 'secao/subsection1'.
Nos outros links do menu, você DEVE acrescentar '<route>default</route>' , pois se não fizer isso, todos os links do menu vão ser roteados para o último router que você definiu no Bootstrap.
Para outros links normais de seu site que apontem para '/secao/subsecao1', não é preciso modificar nada, pois o roteamento é automatico para eles.
Esse roteamento do zend é estático, isso é, apenas para links que não requerem parâmetros. Para outros tipos de roteamento, aguarde próximos artigos.
Até lá =)
Comentários
Postar um comentário