Magento 2: Cómo agregar texto dentro del contenedor a través de XML


11

Estoy intentando representar una sola línea de texto antes de una lista de enlaces en el pie de página. Crear un archivo de plantilla para hacer esto parece ser una pérdida de recursos para esta tarea. Tal como lo entendí, podría generar texto con un Magento\Framework\View\Element\Textbloque en el diseño.

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>

Lo anterior no genera nada, y no estoy seguro de si esto no es compatible, si lo estoy haciendo mal o si hay otro método más adecuado para lograrlo.

Para ser claros, lo que estoy viendo actualmente es:

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

cuando quiero ver

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

¿Alguna sugerencia?

Respuestas:


22

Debe usar el argumento directamente sin la matriz.

En vez de

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

Necesitas:

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

Alternativa

También puedes probar con la <action>etiqueta:

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

Agregar un div directamente

También puede agregar un div directamente en el texto con lo siguiente:

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

¿Cómo agregaría un argumento dentro de un bloque existente, por ejemplo, el bloque product.info.review puede ser referenciado y agregado con otro argumento de tipo cadena?
Devtype

@Devtype totalmente. Puedes <referenceBlock name="product.info.review">hacerlo
Raphael en Digital Pianism el

@RaphaelatDigitalPianism hacer referencia a un bloque no funciona para mí, por otro lado, hacer referencia a un contenedor sí funciona. ¡¡Me estoy perdiendo de algo!!
Devtype

@Devtype no que debería funcionar tanto para bloques como para contenedores. Siéntase libre de crear una nueva pregunta y describir su problema en detalle;)
Raphael en Digital Pianism

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.