rhaas
Frequentador do Fórum
Membro desde: 30/06/2009 23:04:28
Mensagens: 12
Offline
|
Hoje conheço duas formas de se fazer url amigáveis no joomla + virtuemart
1 - Usando o arquivo router.php, que pode ser obtido em http://extensions.joomla.org/extensions/extension-specific/virtuemart-extensions/virtuemart-administration/7512;
Usando o router.php: Você deverá baixar o arquivo e coloca-lo na pasta \components\com_virtuemart\, eu aconselho abrir ele e edita-lo, pois algumas palavras que aparecerão na url estão em inglês, e também para fazer um tratamento, para que não url's não apareçam letras maiúsculas e ou caracteres especiais como acentos, espaços em branco, etc?
2 - Usando a tabela jos_menu do joomla: Está forma é um pouco mais complicada de se implementar, mas a idéia em si é simples, para cada produto você terá um registro nessa tabela, logo a cada inserção, atualização ou exclusão de um produto você terá mexer nessa tabela também.
exemplo de código que coloquei na minha função de inserir produtos
Code:
$link="index.php?option=com_virtuemart&page=shop.product_details&product_id=".$d["product_id"];
$fields = array (
?alias? =>$d['product_url_alias'].?-cod-?.$d["product_id"],
?name? =>$d["product_id"],
?menutype? =>?mainmenu?,
?link? =>$link,
?type?=>?component?,
?published? =>1,
?parent? =>9999,
?componentid? =>34
);
$db->buildQuery( ?INSERT?, ?#__menu?, $fields);
$db->query();
explicação dos campos:
alias ? este será o ?apelido? da página do produto, se seu produto tiver o alias assim ? hospedagem_ugabuga, sua url vai ficar assim ? www.seusite.com.br/hospedagem_ugabuga
name ? é o nome da pagina, indico usar o código do produto para facilitar posteriores atualizações dessa tabela, esse nome fica visível quando você entra em um produto usando uma url dessa tabela.
menutype ? mainmenu é o menu padrão da minha loja.
link ? conterá a url para chegar no produto, por ex. index.php?option=com_virtuemart&page=shop.product_details&product_id=120;
type ? tipo desse link, como o virtuemart é um componente do joomla, usaremos ?component?
published ? para este atalho ficar ativo colocamos 1
parent - aqui colocamos o id do item de menu que queremos como pai, coloquei um numero (9999) que não é id de nenhum item, para que ele não apareça no menu, se eu colocasse um id existente ele ficaria em baixo (filho) desse item.
componentid ? é o id do component virtuemart, no meu caso era o numero 34.
A primeira forma é bem mais fácil de implementar porém haverá algumas itens na url que se você quiser mudar não consiguirá, pelo menos não facilmente.
Esse foi o motivo pelo qual usamos o segundo método, apesar do trabalho na implementação, as url?s estão muita mais enxutas, e fáceis de customizar, muito importante para a questão de SEO.
|