
Como sobrescrever um template “phtml” no Magento 2 utilizando um Módulo e arquivo xml de layout.
Uma das tarefas mais comuns para um desenvolvedor do Magento 2 é substituir um template por uma versão customizada.
O Magento 2 torna essa tarefa fácil na maioria dos casos, mas há alguns casos que deixarão você se perguntando se é mesmo possível fazer isso.
Neste exemplo irei utilizar um módulo como base para fazer o override.
Caso você não saiba como criar uma estrutura básica de um módulo no Magento 2 clique neste link: Como criar um Módulo no Magento 2
Neste exemplo iremos substituir o template “phtml” da lista de desejos “wishlist”.
Layout: O Magento implementa o padrão de arquitetura Model-view-controller; o que significa que o software Magento é projetado em camadas, incluindo a camada de exibição.
A maior parte da camada de exibição do Magento é o layout. Funcionalmente, o layout é uma estrutura de página, representada por hierarquia de elementos (árvore de elementos), que pode ser de dois tipos: blocos e contêineres.
Tecnicamente, o layout é definido nos arquivos .xml, que contêm declarações de elementos e instruções de manipulação de elementos.
Usando o diretório de um módulo como base crie o seguinte arquivo e pastas necessárias.
view/frontend/layout/wishlist_index_index.xml
Ficando:
Vendor/Module/view/frontend/layout/wishlist_index_index.xml
Conteúdo do wishlist_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="customer.wishlist">
<arguments>
<argument name="template" xsi:type="string">Vendor_Module::view.phtml</argument>
</arguments>
</referenceBlock>
</body>
</page> Repare no caminho: Vendor_Module::view.phtml
Utilizando um argumento passamos o novo arquivo de template que desejamos utilizar.
Para concluir, vamos criar agora o arquivo view.phtml no seguinte diretório.
view/frontend/templates/view.phtml
Não esqueça de alterar Vendor_Module:: de acordo com seu módulo.
Esvazie o cache da loja e verifique se o novo template está sendo utilizado.
Para alterar outros templates você devera alterar o nome do bloco de referência e do arquivo de layout xml, exemplo:
Formulário de login:
...
<referenceBlock name="customer_form_login">
... E nome do arquivo de layout xml: customer_account_login.xml
Código obsoleto para sobrescrever um template nas primeiras versões do 2.0
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="customer.wishlist">
<action method="setTemplate">
<argument name="template" xsi:type="string">Vendor_Module::view.phtml</argument>
</action>
</referenceBlock>
</body>
</page> Código acima não funcionou no seu ambiente de desenvolvimento? Testado nas versões 2.1.x e 2.0.x.
Dúvidas? Faça um comentário ou entre em contato.
Bom desenvolvimento!
Seu banner de consentimento está certo, mas o vídeo incorporado grava cookie de terceiro no primeiro carregamento. Troque o domínio…
A listagem do custom post type abre e o single dá 404 no WordPress 6.9. Entenda o cache das rewrite…
Um par .service e .timer substitui a linha do crontab com log no journal, execução perdida recuperada no boot e…
400 produtos importados do fornecedor com a aba Descrição vazia. Um wp eval-file percorre os SKUs sem texto, grava pelo…
Some com PAC e SEDEX da lista quando o frete grátis está disponível, usando woocommerce_package_rates, e limpe o cache de…
A barra de upload chega no fim e o WordPress devolve só "Erro HTTP". Separe as três causas: Imagick barrado…