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 !
