Magento 2: Jak dodać tekst w kontenerze przez XML

11

Próbuję wyrenderować pojedynczy wiersz tekstu przed listą linków w stopce. Utworzenie pliku szablonu w tym celu wydaje się marnowaniem zasobów na to zadanie. Zrozumiałem, że mogę wyprowadzać tekst z Magento\Framework\View\Element\Textblokiem w układzie.

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>

Powyższe nie generuje niczego i nie jestem pewien, czy to nie jest obsługiwane, czy po prostu robię to źle, czy też istnieje inna, bardziej odpowiednia metoda, aby to osiągnąć.

Dla jasności, obecnie widzę:

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

kiedy chcę zobaczyć:

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

Jakieś sugestie?

Jonathan Eltgroth
źródło

Odpowiedzi:

22

Musisz użyć argumentu bezpośrednio bez tablicy.

Zamiast

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

Potrzebujesz:

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

Alternatywny

Możesz także spróbować z <action>tagiem:

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

Bezpośrednie dodawanie div

Możesz także dodać div bezpośrednio w tekście za pomocą:

<argument translate="true" name="text" xsi:type="string"><![CDATA[<div class="label">About Us</div>]]></argument>
Raphael at Digital Pianism
źródło
Jak dodać argument do istniejącego bloku, np. Blok product.info.review, czy można się do niego odwoływać i dodać kolejny argument typu string?
Devtype,
@Devtype całkowicie. Możesz <referenceBlock name="product.info.review">to zrobić
Raphael w Digital Pianism,
@RaphaelatDigitalPianism odwoływanie się do bloku nie działa dla mnie, z drugiej strony odwołanie do kontenera działa. Czy coś mi brakuje?
Devtype,
@ Typ urządzenia nie powinien działać zarówno dla bloków, jak i kontenerów.
Utwórz
@RaphaelatDigitalPianism magento.stackexchange.com/questions/141891/…
Devtype