Cursos Magento

Como usar PHP em blocos e páginas CMS no Magento

,

23 de outubro de 2018

Uma das coisas que me fascina no Magento é a flexibilidade que temos para alterar e modificar o layout de páginas através das atualizações de Layout XML. Entender os XML’s nem sempre é tarefa fácil, mas uma vez que você entende como eles funciona, pode fazer atualizações importantes nos componentes de uma página direto no painel administrativo, sem alterar arquivo algum.

O Magento monta todas as páginas usando blocos. Um bloco é um conjunto representado por uma classe PHP (inteligência) e uma camada de visualização: os templates phtml. A organização e a ordem como esses blocos são exibidos é feita através de arquivos XML’s presentes nos temas e nos módulos da loja.

Inserindo blocos em páginas e blocos CMS

Para inserir um bloco dentro de uma página CMS ou mesmo em um bloco estático, podemos usar a diretiva abaixo na área de conteúdo:

Como parâmetros temos:

  • type: caminho para classe PHP do bloco. A primeira parte (core) é definida no arquivo etc/config.xml do módulo onde ela foi declarada. A segunda parte (template) é o caminho para o arquivo php dentro da pasta Block do módulo onde ela foi declarada. Neste caso app/code/core/Mage/Core/Block/Template.php.
  • name: nome do bloco. Deve ser um nome único.
  • template: caminho relativo para o arquivo phtml. O arquivo phtml é relativo a pasta app/design/frontend/[pacote]/[tema]/template. Se considerarmos que o arquivo acima não existe no meu tema, o magento iria buscar o arquivo em app/design/frontend/base/default/template/caminho/do/template.phtml.

Exemplo prático em Vídeo

No vídeo abaixo eu respondo a uma dúvida de um dos alunos do curso de criação de módulos e desenvolvimento backend para Magento 1. Veremos como inserir um bloco php que exibe a quantidade de itens que o cliente tem no carrinho.

Entenda o “type”

O parâmetro type de um bloco corresponde ao caminho dele dentro da pasta Block do módulo que o declarou. No primeiro exemplo temos core/template. A primeira parte (core) foi declarada da seguinte forma no arquivo abaixo:

Desta forma, sempre que nos referirmos a um type="core/ estaremos falando da pasta Block deste módulo.

Então, quando especificamos core/template a classe que será usada está localizada em app/code/core/Mage/Core/Block/Template.php.

Qualquer módulo pode ter um ou mais classes do tipo Block. O Magento varrerá e mesclará todos os arquivos config.xml de todos os módulos para obter esta informação.

Simples né?

Entenda o “template”

O template phtml é o arquivo responsável pela visualização do bloco. Ele contém código HTML e PHP, mas não deve conter nenhuma inteligência ou regra de negócio.

A classe PHP definida em type é representada pela variável $this dentro do arquivo de template phtml. Todos os métodos públicos dela e da sua classe pai ficam disponíveis para uso.

Veja um exemplo de uso nativo do Magento:

 

Indo além

Como disse, gosto muito assunto, e aqui no Magenteiro existem vários posts e vídeos sobre Layout XML e blocos. Você pode encontrá-los nas tag Layout XML.

Também falo bastante sobre o assunto nos cursos Torne-se um desenvolvedor Magento Front End e Criação de Módulos e Desenvolvimento Backend para Magento.

Ricardo Martins

Desenvolvedor web há mais de 15 anos, desde 2011 totalmente especializado em Magento, ajudo na criação de conteúdo, e cursos online sobre Magento - hoje com mais de 7000 alunos de 97 países - e criador do módulo PagSeguro Transparente para Magento, usado em mais de 12 mil lojas.

Últimos posts por Ricardo Martins (exibir todos)

Assuntos: | | |
Comentários