Inserir bloco estático via XML no Magento

Inserir um bloco estático via XML é muito fácil, mas tem algumas manhas que acabam passando despercebidas.

Neste artigo eu mostro como inserir um bloco estático em qualquer lugar do site.

Para este exemplo eu usei o arquivo local.xml, se não sabe do que estou falando veja este artigo: local.xml em 5 passos.

Ele também pode ser colocado dentro de lugares específicos para XML do frontend, como por exemplo, na Box atualização de layout por XML que fica no menu layout, design ou visual (depende da sua tradução) nas páginas CMS.

O código básico para inserir um bloco estático via XML é este:

<block type="cms/block" name=“nome_do_bloco” as=“nome_do_bloco” >
    <action method="setBlockId"><block_id>identivicador_bo_bloco_estatico</block_id></action>
</block>

Agora você precisa saber onde pretende colocar este código. Por exemplo, digamos que queira colocar na lateral esquerda encima de todos os outros intens:

<default>
    <reference name=”left”>
    <block type="cms/block" name=“nome_do_bloco” as=“nome_do_bloco” before=”” >
        <action method="setBlockId"><block_id>identivicador_bo_bloco_estatico</block_id></action>
    </block>
    </reference>
</default>

A propriedade before diz ao sistema que o conteúdo deve ser posto antes de tal item, caso não coloque nada ele será o primeiro item.
Agora se eu quiser colocar por ultimo?

<default>
    <reference name=”left”>
        <block type="cms/block" name=“nome_do_bloco” as=“nome_do_bloco” after=”” >
            <action method="setBlockId"><block_id>identivicador_bo_bloco_estatico</block_id></action>
        </block>
    </reference>
</default>

A propriedade after funciona da mesma forma que before, sendo que ele insere o conteúdo por último.

E caso queira que ao invez de aparecer em todas as páginas você queria somente nas paginas de catálogo?

Para isso vai tirar do nó <default> e colocar, por exemplo, em <catalog_category_layered>, isso faz com que o bloco só apareça nas páginas de catálogo.

Ficaria assim:

<catalog_category_layered>
    <reference name=”left”>
        <block type="cms/block" name=“nome_do_bloco” as=“nome_do_bloco” after=”” >
            <action method="setBlockId"><block_id>identivicador_bo_bloco_estatico</block_id></action>
        </block>
    </reference>
</catalog_category_layered>

Pronto! Agora você já sabe como colocar um bloco estático em qualquer lugar do site somente alterando um arquivo XML. Pesquise a pasta do Magento app/design/frontend/base/default/layout e confira as imensas possibilidades que agora tem com este recurso. Agora ficou mais fácil? Então até a próxima.

Um abraço

Este conteúdo foi interessante? inscreva-se pelo botão abaixo para receber tudo que falo sobre Magento
[egoi-magento]

Respostas de 9

    1. Fazer isso nos arquivos de layout seria muito complicado, acho que nem tem como, mas é muito fácil conseguir esse resultado.
      Vai em gerenciar categorias, seleciona a categoria que deseja personalizar,
      na guia Visual personalizado (Custom Design), no campo Atualização de Leiaute (Custom Layout Update), insira um código semelhante a esse:

      <reference name="left">
         <block type="cms/block" name="nome_do_bloco" as="nome_do_bloco" before="" >
            <action method="setBlockId"><block_id>seu_bloco</block_id></action>
         </block>
      </reference>

      Problema resolvido

  1. Muito bom o artigo!
    Seria possivel inserir uma tag html?, um exemplo quero colocar uma div com a classe empresa no catalogo de produto.

  2. Olá Ronaldo, nao tenho acesso ao codigo do magento, só ao back.. sabe me informar qual a ID (nome) do bloco “Descrição do produto” da pagina de produto?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.