Reescrevendo URL no Magento
Publicados: 2014-09-11É extremamente importante que todos os sites tenham URLs amigáveis para servir ao propósito de SEO. No entanto, nem sempre é fácil para nós criá-los no Magento, especialmente quando você instala um módulo. Como podemos resolver este problema como um usuário não técnico? Nós fornecemos 2 soluções viáveis para reescrita de URL no Magento e criamos URLs apropriadas como você deseja. Você vê que não será mais um grande problema.
QUENTE!! A versão 2.0 do Claude foi lançada
Ver demonstração
Claue – Clean, Minimal Magento 2&1 Theme é um excelente modelo para uma loja de comércio eletrônico moderna e limpa com mais de 40 layouts de página inicial e toneladas de opções para loja, blog, portfólio, layouts de localizador de lojas e outras páginas úteis. A versão 2.0 do Claue vem com vários recursos exclusivos, incluindo:
- Sendo baseado no tema Luma.
- Conheça todos os padrões do tema Magento
- Melhoria significativa de desempenho
- Compatível com a maioria das extensões de terceiros.
- Totalmente compatível com Magento 2.4.x
Esta segunda versão avançada diferencia-se completamente da anterior. Assim, se você estiver usando o Claue versão 1 e quiser atualizar para o Claue versão 2, você só pode reconstruir um novo site em vez de atualizar da versão antiga. Agora, vamos voltar ao tópico principal
Antes de abordarmos as 2 soluções, estamos mostrando um exemplo para descrever como uma URL padrão é criada e o conhecimento de pré-requisito para criar alguns reparos. Por exemplo. Criamos um módulo para Blog chamado Blog e seu namespace é MGS com campos simples como
identificação | título | Descrição |
No back-end, quando criamos um post precisamos inserir dois campos, ou seja. Título e Descrição. O ID da postagem será gerado automaticamente. Para exibir os detalhes do post do Blog contamos com roteador (declarado no arquivo config.xml, declaramos blog), controller (chamamos index, então será o arquivo IndexControler.php nos controladores de pasta), action (chamamos view , função viewAction no arquivo IndexControler.php) e id do post.
Portanto, a URL padrão do post no front-end ficará assim:
http://domain.com/blog/index/view/id/1 (1 é o ID da postagem)
Até onde podemos ver, esse URL não é totalmente bom para SEO, ele deve ser reescrito para se tornar um URL amigável. Voltando ao objetivo principal, propusemos 2 métodos para criar URL amigável. E de qualquer forma, você precisará definir a URL desejada ou seguirá uma regra comum para criar a URL (geralmente usaremos o título da postagem, converteremos todos os caracteres em estilo normal, substituiremos o espaço vazio por -, por exemplo, Título “ How to rewrite url in Magento ” se tornará “ how-to-rewrite-url-in-magento.
Neste artigo, usaremos a abordagem de definição de URL, portanto, adicionaremos mais um campo ao banco de dados acima para salvar a URL.
identificação | título | Descrição | URL |
Assim, a URL da postagem será preenchida.
Primeira técnica para reescrever URL
Use a função de reescrita de URL do Magento, você pode obter mais detalhes em Catálogo-> Gerenciamento de reescrita de URL.
Lá você descobrirá que o Magento cria um módulo para salvar a reescrita de URL para a categoria e o produto. O Magento também permite que você adicione reescrita de URL clicando em "Adicionar Reescrita de URL" para adicionar uma reescrita de URL personalizada com:
Caminho de destino: seja a URL do post, por exemplo. blog/index/view/id/1
Request Path : seja a reescrita de URL que você irá inserir, por exemplo. how-to-rewrite-url-in-magento.html
Obviamente, não adicionaremos manualmente essas informações para salvar a reescrita de URL. Em vez disso, utilizaremos o modelo url_rewrite do módulo principal (Mage::getModel('core/url_rewrite')) para salvar a URL do Blog na tabela core_url_rewrite após salvar os dados do blog.
Depois de salvar uma postagem no Blog, você usa o seguinte código para salvar a reescrita de URL:
Mage::getModel('core/url_rewrite') ->setIsSystem(true) ->setIdPath('blog/index/view/id/'.$blogId) ->setTargetPath('blog/index/view/id/'.$blogId) ->setRequestPath($url) ->save();
Nota: $blogId é o id do blog depois de salvo e $url é o URL que você definiu.
Caso você seja lembrado, o comando acima é aplicado ao novo post, se você quiser editar um post existente, você precisa atualizar este registro.
Segunda técnica para reescrever URL
Ainda pegue o módulo Blog e os mesmos campos de dados mencionados acima, você cria posts no back-end incluindo dados adequados de título, descrição, url.
Vá para config.xml (app/code/local/MGS/Blog/etc)
Dentro da tag global:
<global> … </global>
Adicione o seguinte código
<events> <controller_front_init_routers> <observers> <blog_custom_router> <class>MGS_Blog_Controller_Router</class> <method>initControllerRouters</method> </blog_custom_router> </observers> </controller_front_init_routers> </events>
Na pasta principal do módulo app/code/local/MGS/Blog você criará outra pasta chamada Controller na qual você então cria um arquivo chamado Router.php com o conteúdo abaixo:
<?php class MGS_Blog_Controller_Router extends Mage_Core_Controller_Varien_Router_Abstract { /** * Initialize Controller Router * * @param Varien_Event_Observer $observer */ public function initControllerRouters($observer) { /* @var $front Mage_Core_Controller_Varien_Front */ $front = $observer->getEvent()->getFront(); $front->addRouter('blog', $this); } /** * Validate and Match Cms Page and modify request * * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse() ->setRedirect(Mage::getUrl('install')) ->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); $condition = new Varien_Object(array( 'identifier' => $identifier, 'continue' => true )); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse() ->setRedirect($condition->getRedirectUrl()) ->sendResponse(); $request->setDispatched(true); return true; } if (!$condition->getContinue()) { return false; } $collection = Mage::getModel('blog/blog') ->getCollection(); if(count($collection)>0){ foreach($collection as $post){ if($identifier == $post->getUrl()){ $request->setModuleName('blog'); $request->setControllerName('index'); $request->setActionName('view'); $request->setParam('id', $post->getId()); return true; } } } } }
O trecho de código acima significa:
Por exemplo, quando você digita um caminho em um navegador:
http://domain.com/how-to-rewrite-url-in-magento.
A função irá comparar o caminho: how-to-rewrite-url-in-magento.html com url na tabela de dados do blog
Se o caminho for semelhante ao campo URL de qualquer registro no banco de dados, então 4 linhas de comando:
$request->setModuleName('blog'); $request->setControllerName('index'); $request->setActionName('view'); $request->setParam('id', $post->getId());
ajudará o sistema a entender que a URL corresponde ao roteador: blog, controler: index, action: view e id é o id do registro que possui URL idêntica ao caminho no navegador.
Por exemplo. Registre com URL how-to-rewrite-url-in-magento.html e id 1, então:
http://domain.com/how-to-rewrite-url-in-magento.html
é correspondente a
http://domain.com/blog/index/view/id/1
Essas são as duas soluções que recomendamos para resolver o problema de URL amigável no Magento . Esperamos que você os ache úteis. Agradecemos muito seu comentário e mais contribuições para o artigo.
Muito obrigado pelo seu tempo!
Equipe de suporte da Magesolution !