Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, todos os links das páginas de pesquisa do google na minha tela estão ROXOS, mas eu e muita gente que também pesquisa tem a mesma duvida quanto a rotas no ZF.
Eu tenho 3 tabelas: Produto, Departamento, Categoria
A tabela produto grava a ID do departamento e da categoria que o produto pertence
Na vanegação da aplicação eu listo os produtos por departamento e por categoria,
e hoje funciona assim:
site.com.br/produto/departamento/id/1
site.com.br/produto/categoria/id/1
site.com.br/produto/id/1
O meu problema é fazer com que funcione assim:
site.com.br/produto/departamento/informatica
site.com.br/produto/categoria/monitor-lcd
site.com.br/produto/254/monitor-lcd-sansung
O que pode ser feito exatamente nesse caso?
Acho que esse assunto merece uma atenção de quem conheçe pois vejo que é duvidada de muita gente também, Forum não é helpdesk mas precisamos de uma força.
Da uma olhada neste blog de um contribuidor do forum aqui:
http://matiasrezende.com.br/blog/zend-framework/criando-rotas/
Creio que é mais o menos isso que você quer...
Bom eu tive o mesmo problema com minha aplicação e resolvi criando um "titleSlug"...
ex: o titulo é Monitor Sansung e tenho uma função que transforma ele em montiro-sansung substituindo os espaços por - e as palavras para lowercase... ai busco ele pelo slug
e ficou site.com.br/categoria/titulo-slug
Creio que seja meio amadora esta "solução" mas foi o único jeito que eu consegui resolver :P
você também pode passar concatenando o slug se preferir... por exemplo site.com.br/categoria/254-titulo-slug
um exemplo é o site do baixaki jogos... ele joga o titulo concatenado depois do ID..
http://www.baixakijogos.com.br/noticias/22648-site-demonstra-integracao-entre-windows-8-e-xbox-live-video
Até
Isso também pode ajudar:
http://mauriliohenrique.com.br/blog/2011/08/03/rota-diferenciada-com-zend-router/
Da uma olhada no link abaixo tem um bom exemplo!
http://codeutopia.net/blog/2007/11/16/routing-and-complex-urls-in-zend-framework/
Intendi a lógica do slug, você tem uma exemplo de metodo que gera o slug no momento do insert?
>
Primeiro crie um helper para transformar uma string em um slug, exemplo: Nome do Produto :seta: nome-do-produto.
Depois que você já tiver esse helper criado, adicione um campo chamado "slug", "url", ou outro nome que preferir nessas suas 3 tabelas.
Na hora que for cadastrar um novo departamento, categoria e produto, gere o slug e salve no seu devido campo no banco de dados.
Daí é só substituir os URLs e consultas, em vez de buscar pelo ID de cada registro você busca pelo slug.
Isso sem dúvida ajuda bastante principalmente em termos de SEO. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif&key=f16394cbddc7140988e95da40d87cdc04e8fd18618efd400ded17391eb1801ce" alt="thumbsup.gif" />
Vou postar o helper que eu mesmo criei pra usar nas minhas apps.
<?php
class Zend_Controller_Action_Helper_Slug extends Zend_Controller_Action_Helper_Abstract
{
public function direct($str) {
$str = trim($str);
$str = mb_strtolower($str, 'UTF-8');
$search = array('á', 'à', 'â', 'ã', 'ª', 'ä', 'å', 'é', 'è', 'ê', 'ë', 'í', 'ì', 'ï', 'î', 'ó', 'ò', 'ô', 'õ', 'ö', 'ú', 'ù', 'û', 'ü', 'ç', 'ñ', 'æ', 'œ', 'ø', '$', '¹', '²', '³', '&');
$replace = array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'c', 'n', 'ae', 'oe', 'o', 's', '1', '2', '2', 'e');
$str = str_replace($search, $replace, $str);
$str = preg_replace('/[^a-z0-9-]/', '-', $str);
$str = preg_replace('/-+/', '-', $str);
$str = trim($str, '-');
return urlencode($str);
}
}
Um abraço!
>
Vou postar o helper que eu mesmo criei pra usar nas minhas apps.
<?php
class Zend_Controller_Action_Helper_Slug extends Zend_Controller_Action_Helper_Abstract
{
public function direct($str) {
$str = trim($str);
$str = mb_strtolower($str, 'UTF-8');
$search = array('á', 'à', 'â', 'ã', 'ª', 'ä', 'å', 'é', 'è', 'ê', 'ë', 'í', 'ì', 'ï', 'î', 'ó', 'ò', 'ô', 'õ', 'ö', 'ú', 'ù', 'û', 'ü', 'ç', 'ñ', 'æ', 'œ', 'ø', '$', '¹', '²', '³', '&');
$replace = array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'c', 'n', 'ae', 'oe', 'o', 's', '1', '2', '2', 'e');
$str = str_replace($search, $replace, $str);
$str = preg_replace('/[^a-z0-9-]/', '-', $str);
$str = preg_replace('/-+/', '-', $str);
$str = trim($str, '-');
return urlencode($str);
}
}
Um abraço!
Implementei a geração de slug, fiz os metodos de seleção por slug e ta tudo certo.
Valeu pela força!
Primeiro crie um helper para transformar uma string em um slug, exemplo: Nome do Produto :seta: nome-do-produto.
Depois que você já tiver esse helper criado, adicione um campo chamado "slug", "url", ou outro nome que preferir nessas suas 3 tabelas.
Na hora que for cadastrar um novo departamento, categoria e produto, gere o slug e salve no seu devido campo no banco de dados.
Daí é só substituir os URLs e consultas, em vez de buscar pelo ID de cada registro você busca pelo slug.
Isso sem dúvida ajuda bastante principalmente em termos de SEO. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif&key=f16394cbddc7140988e95da40d87cdc04e8fd18618efd400ded17391eb1801ce" alt="thumbsup.gif" />