Magento 2: Como adicionar texto dentro de container via XML


11

Estou tentando renderizar uma única linha de texto antes de uma lista de links no rodapé. Criar um arquivo de modelo para fazer isso parece ser um desperdício de recursos para esta tarefa. Pelo que entendi, eu poderia produzir texto com um Magento\Framework\View\Element\Textbloco no layout.

XML

<referenceContainer name="footer">
  <container name="footer.column.about_us" htmlTag="div" htmlClass="column about-us" before="-">
    <container name="column.about_us.label" htmlTag="div" htmlClass="label">
      <block class="Magento\Framework\View\Element\Text" name="about_us.label">
        <arguments>
          <argument name="data" xsi:type="array">
            <item name="text" xsi:type="string">About Us</item>
          </argument>
        </arguments>
      </block>
    </container>
    <block class="Magento\Framework\View\Element\Html\Links" name="footer_links.about_us">
      <arguments>
        <argument name="css_class" xsi:type="string">footer links</argument>
      </arguments>
    </block>
  </container>
</referenceContainer>

O anterior não produz nada, e não tenho certeza se isso não é suportado, se estou apenas fazendo errado ou se existe outro método mais adequado para fazer isso.

Para ser claro, o que estou vendo atualmente é:

<div class="column about-us">
  <ul class="footer links">...</ul>
</div>

quando eu quero ver:

<div class="column about-us">
  <div class="label">About Us</div>
  <ul class="footer links">...</ul>
</div>

Alguma sugestão?

Respostas:


22

Você precisa usar o argumento diretamente sem a matriz.

Ao invés de

    <arguments>
      <argument name="data" xsi:type="array">
        <item name="text" xsi:type="string">About Us</item>
      </argument>
    </arguments>

Você precisa:

    <arguments>
      <argument translate="true" name="text" xsi:type="string">About Us</argument>
    </arguments>

Alternativa

Você também pode tentar com a <action>tag:

<action method="setText">
      <argument translate="true" name="text" xsi:type="string">About Us</argument>
</action>

Adicionando uma div diretamente

Você também pode adicionar uma div diretamente no texto com o seguinte:

<argument translate="true" name="text" xsi:type="string"><![CDATA[<div class="label">About Us</div>]]></argument>

Como você adicionaria um argumento dentro de um bloco existente, por exemplo, o bloco product.info.review, ele pode ser referenciado e adicionado a outro argumento do tipo string?
DEVTYPE

@Devtype totally. Você pode usar <referenceBlock name="product.info.review">para isso
Raphael no Digital Pianism

@RaphaelatDigitalPianism referenciar um bloco não funciona para mim, por outro lado, referenciar um contêiner funciona. Estou esquecendo de algo!!
DEVTYPE

@Devtype no que deve funcionar para blocos e contêineres. Sinta-se à vontade para criar uma nova pergunta e descrever o seu problema em detalhes;)
Raphael no Digital Pianism

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.