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
Ronaldo, bom dia!
Parabéns pelo conteúdo!
Para colocar o bloco somente eu uma determinada categoria, como seria?
Por exemplo: Só quero que o bloco apareça na categoria id:9.
Obrigado!
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
Muito bom o artigo!
Seria possivel inserir uma tag html?, um exemplo quero colocar uma div com a classe empresa no catalogo de produto.
Obrigado, pra fazer isso veja os artigos sobre como personalizar o tema do Magento
Amigo como faço para incluir duas categorias na página hoje utilizando o XML.
O código base é esse:
55
5
Ocorre que quando duplico o código ele insere duas vezes a última categoria selecionada. Pode me ajudar?
verifica se o atributo name é diferente, se for igual o magento vai ignorar o primeiro
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?
name=”product.description” as=”description”