Cursos Magento

Executando código PHP dentro de atributos de produtos

, , ,

21 de novembro de 2017

Algumas vezes acabamos por criar atributos de produto que aceitam conteúdo HTML, e consequentemente habilitam o editor WYSIWYG.

Habilitando editor WYSIWYG no Magento

Configuração do atributo de produto

Botão WYSIWYG

Botão do Editor aparece na edição do produto para o atributo definido

 

No entanto, não é possível inserir nenhum bloco personalizado, ou mesmo executar códigos PHP no editor.

Como sabemos, nas páginas CMS ainda podemos referenciar outros blocos, inserindo a tag abaixo:

Desta forma, poderíamos até criar um módulo Magento e definir um template phtml, desta forma, executando código PHP próprio em páginas CMS.

Inserindo blocks em atributos personalizados

E quando estamos falando de produtos com atributos personalizados e queremos inserir um block para ser renderizado com ele?

Recentemente tive esta necessidade aqui no Magenteiro, na página de produto. Eu tenho um atributo personalizado de produto, onde o editor WYSIWYG está ativo, mas preciso executar algo um pouco mais complexo ali dentro, e ao mesmo tempo.

Os tais dos filters

O Magento possuí alguns processadores que possuem filtros responsáveis por fazer substituir snippets como este acima por outras coisas. Isso está presente em vários lugares do Magento, sendo os e-mails transacionais o mais comum deles.

No caso dos {{blocks}}, usaremos o método filter, do Helper CMS, da seguinte forma:

 

No valor do meu atributo, que pode ser texto, ou html, eu insiro meu snippet anterior, que irá carregar um bloco do tipo core/template e com um phtml específico.

Além disso, todas as propriedades passadas para o nosso snippet pode ser usada dentro do phtml, ou melhor ainda, dentro da classe PHP do block. Ficaria algo mais ou menos assim:

E no phtml:

 

Com isso, você poderia criar blocos complexos ou com alguma inteligência que podem ser usados dentro de conteúdos CMS, ou como mostrado no exemplo acima, dentro de atributos personalizados, descrição de produto, e por aí vai.

No Magenteiro isso é bastante utilizado nas páginas de produto, onde cada página possuí descrição e outros atributos com alguma inteligência, mas que variam de um produto para o outro. Desta forma, posso passar algumas das variáveis no próprio cadastro do produto, e a classe do bloco faz o resto do trabalho.


Muito complexo?

Se o artigo acima ficou muito complexo para você, experimente assistir as aulas da seção de Layout XML e Temas do curso de front end para Magento,  ou do Layout XML e Blocks do curso de backend.

 

 

Gostou do artigo? Comente, compartilhe. É a única forma de saber se devo continuar fazendo mais.

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)

Comentários