Como usar PHP em blocos e páginas CMS no Magento
Desenvolvimento, Magento 1
Publicado em 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:
{{block type="core/template" name"nomedomeubloco" template="caminho/do/template.phtml"}}
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:
<config> <global> <blocks> <core> <class>Mage_Core_Block</class> </core> </blocks> </global> </config>
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:
<?php $_product = $this->getProduct(); ?>
class Mage_Catalog_Block_Product_View extends Mage_Catalog_Block_Product_Abstract public function getProduct() { if (!Mage::registry('product') && $this->getProductId()) { $product = Mage::getModel('catalog/product')->load($this->getProductId()); Mage::register('product', $product); } return Mage::registry('product'); } }
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.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-1/desenvolvimento/como-usar-php-em-blocos-e-paginas-cms-no-magento/"]