Desenvolvimento Magento 2

Layout XML do Magento 2: remover bloco de módulo de terceiro

Instalou um módulo de terceiro e ele plantou um banner de promoção no topo de todas as páginas. O resto do módulo funciona e você não quer desinstalar, quer só sumir com aquele bloco. Uma linha de layout XML dentro do seu tema resolve, sem encostar em nada dentro de vendor/.

Primeiro descubra o nome do bloco

Sem o nome exato você não remove nada. Ligue os hints numa cópia de homologação: deploy:mode:set developer limpa cache e conteúdo estático gerado, então não rode isso na loja que está vendendo.

sudo -u www-data bin/magento deploy:mode:set developer
sudo -u www-data bin/magento config:set dev/debug/template_hints_storefront 1
sudo -u www-data bin/magento config:set dev/debug/template_hints_blocks 1
sudo -u www-data bin/magento cache:flush

Recarregue a loja: cada caixa vermelha passa a mostrar o template e o nome do bloco, algo como fornecedor.promo.banner. É esse nome que vai para o XML.

O remove no layout do tema

Crie o arquivo app/design/frontend/SuaVendor/seutema/Magento_Theme/layout/default.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="fornecedor.promo.banner" remove="true"/>
    </body>
</page>

Depois é só limpar: bin/magento cache:clean layout block_html full_page. O default.xml pega o site inteiro; se o banner só aparece na página do produto, o arquivo certo é catalog_product_view.xml e o efeito fica restrito ali.

remove=”true” não é display=”false”

Aqui mora a pegadinha que já me custou uma tarde. O remove tira o bloco e todos os filhos dele da árvore de layout: a classe nem chega a ser instanciada, então some junto qualquer consulta ao banco que aquele bloco fazia. O display=”false” mantém o bloco montado e só não imprime a saída, o que serve quando outro bloco depende dele.

A remoção é aplicada depois do merge de todos os layouts, então referenciar o bloco em outro arquivo não traz ele de volta: para reverter, apague o seu referenceBlock (ou troque para remove=”false”) e limpe o cache. Terminou de caçar o nome? Devolva os dois config:set para 0, rode cache:flush e volte a loja para production mode.

Post Recentes

Custom post type dando 404: flush_rewrite_rules na ativação do plugin

A listagem do custom post type abre e o single dá 404 no WordPress 6.9. Entenda o cache das rewrite…

5 horas atrás

systemd timer no lugar do cron: agendar script com log e sem execução dupla

Um par .service e .timer substitui a linha do crontab com log no journal, execução perdida recuperada no boot e…

14 horas atrás

Descrição em massa no WooCommerce: wp eval-file lendo a lista de SKUs

400 produtos importados do fornecedor com a aba Descrição vazia. Um wp eval-file percorre os SKUs sem texto, grava pelo…

21 horas atrás

Frete grátis no WooCommerce: esconder as outras opções de entrega

Some com PAC e SEDEX da lista quando o frete grátis está disponível, usando woocommerce_package_rates, e limpe o cache de…

1 dia atrás

Erro HTTP no WordPress ao enviar imagem para a biblioteca de mídia

A barra de upload chega no fim e o WordPress devolve só "Erro HTTP". Separe as três causas: Imagick barrado…

2 dias atrás

style amp-custom acima de 75KB: como cortar o CSS inline do AMP

The author stylesheet specified in tag 'style amp-custom' is too long? Meça o bloco com curl e tire da fila…

2 dias atrás