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

claue2_edited (1)

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.

Imagem 1

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 !