Magento 2: Як додати текст у контейнер через XML


11

Я намагаюся надати один рядок тексту перед списком посилань у нижньому колонтитулі. Створення файлу шаблонів для цього видається марною витратою ресурсів для цього завдання. Як я це зрозумів, я міг вивести текст із Magento\Framework\View\Element\Textблоком у макеті.

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>

Попереднє не дає нічого, і я не впевнений, чи це не підтримується, чи я просто роблю це неправильно, чи є інший більш правильний метод для цього.

Щоб було зрозуміло, я зараз бачу:

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

коли я хочу побачити:

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

Будь-які пропозиції?

Відповіді:


22

Вам потрібно використовувати аргумент безпосередньо без масиву.

Замість

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

Тобі потрібно:

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

Альтернатива

Ви також можете спробувати з <action>тегом:

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

Додавання діва безпосередньо

Ви також можете додати div безпосередньо в текст за допомогою наступного:

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

Як би ви додали аргумент всередину вже існуючого блоку, наприклад, блок блоку product.info.review, на нього можна посилатися та додавати інший аргумент рядка типу?
Devtype

@Devtype повністю. Можна скористатися <referenceBlock name="product.info.review">для цього
Рафаель у Digital Pianism

@RaphaelatDigitalPianism, посилання на блок для мене не працює, з іншого боку, посилання на контейнер працює. Я щось пропускаю !!
Devtype

@Devtype немає, який повинен працювати як для блоків, так і для контейнерів. Сміливо створіть нове запитання та детально опишіть свою проблему;)
Рафаель у Digital Pianism

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.