Cursos Magento

Usando parâmetros dinâmicos dentro de Layout XML (Helpers)

, , ,

Atualizado em 11 de setembro de 2020

Se você acompanha meus artigos sabe que sou fã do sistema de layout XML do Magento. Apesar de ser super confuso pra quem está começando, ele nos dá uma flexibilidade imensa.

Com eles podemos alterar páginas e elementos em praticamente qualquer lugar através da injeção de novos XML’s em módulos, temas, e em diversas áreas do admin.

Vejamos o exemplo abaixo (Magento 1):

<layout>
    <default>
        <reference name="before_body_end">
            <block type="core/text" name="data.hoje">
                <action method="setText">
                    <text>20 de Maio</text>
                </action>
            </block>>
        </reference>
    </default>
</layout>

 

No exemplo acima, adicionei um bloco do tipo core/text e chamei o método setText, passando como primeiro parâmetro o valor “20 de Maio”. Este texto/bloco será inserido no final de todas as minhas páginas, pois está no nó/handle default.

Muito bem. E se quisermos que o valor do parâmetro seja dinâmico?

Isso pode ser útil em diversas situações:

  • Quando queremos interagir com dados de usuário
  • O valor do parâmetro muda de acordo com alguma condição não contemplada (você poderia criar um handle customizado também)
  • Quando o valor é dinâmico (como a data acima)
  • Quando há alguma inteligência ou regra de negócio envolvida

Uso de um helper no layout XML

Para estes e outros casos, podemos chamar um método público de qualquer helper do Magento.

Vejamos o exemplo abaixo:

<layout>
    <default>
        <reference name="before_body_end">
            <block type="core/text" name="data.hoje">
                <action method="setText">
                    <text helper="meuhelper/pegarData"/>
                </action>
            </block>>
        </reference>
    </default>
</layout>

Neste exemplo, o parâmetro do método setText passa a vir de um helper. Neste exemplo, meuhelper se refere ao identificador do helper no módulo onde ele foi definido, como no exemplo abaixo. Já o pegarData se refere ao método dentro de Namespace/Modulo/Helper/Data.php.

<?xml version="1.0"  encoding="UTF-8"?>
<config>
    <modules>
        <Namespace_Modulo>
            <version>1.1.0</version>
        </Namespace_Modulo>
    </modules>
    <global>
        <helpers>
            <meuhelper>
            <class>Namespace_Modulo_Helper</class>
            </meuhelper>
        </helpers>
    </global>
</config>

 

Se você quiser usar outro método em outro helper, você pode fazê-lo no xml da seguinte forma:

<text helper="meuhelper/outrohelper::pegarData"/>

No exemplo acima ele chamaria o método pegarData em Namespace/Modulo/Helper/Outrohelper.php.

Bacana, não é mesmo?

Tá perdido(a)?

Aqui no Magenteiro você encontra uma série de artigos do básico ao avançado sobre Layout XML.

Há também o curso de criação de temas e desenvolvimento front end para Magento 1. Este curso inclusive foi eleito o melhor curso de e-commerce em 2018, e possuí mais de 1500 alunos em todo mundo.

Se preferir, deixe um comentário sobre o assunto aqui em baixo.

Fonte adicional: https://magento.stackexchange.com/a/35933/555

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-1/parametros-dinamicos-em-layout-xml-helpers/"]