Magento 2: Comment ajouter du texte dans un conteneur via XML

11

J'essaie de rendre une seule ligne de texte avant une liste de liens dans le pied de page. La création d'un fichier modèle pour ce faire semble être un gaspillage de ressources pour cette tâche. Si je comprends bien, je pouvais sortir du texte avec un Magento\Framework\View\Element\Textbloc dans la mise en page.

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>

Ce qui précède ne produit rien, et je ne sais pas si cela n'est pas pris en charge, si je le fais simplement mal ou s'il existe une autre méthode plus appropriée pour y parvenir.

Pour être clair, ce que je vois actuellement, c'est:

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

quand je veux voir:

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

Aucune suggestion?

Jonathan Eltgroth
la source

Réponses:

22

Vous devez utiliser l'argument directement sans le tableau.

Au lieu de

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

Vous avez besoin:

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

Alternative

Vous pouvez également essayer avec le <action>tag:

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

Ajouter un div directement

Vous pouvez également ajouter un div directement dans le texte avec les éléments suivants:

<argument translate="true" name="text" xsi:type="string"><![CDATA[<div class="label">About Us</div>]]></argument>
Raphael chez Digital Pianism
la source
Comment ajouteriez-vous un argument à l'intérieur d'un bloc existant, par exemple le bloc product.info.review peut-il être référencé et ajouté avec un autre argument de type chaîne?
Devtype
@Devtype totalement. Vous pouvez utiliser <referenceBlock name="product.info.review">pour le faire
Raphael au Digital Pianism
@RaphaelatDigitalPianism référencer un bloc ne fonctionne pas pour moi, en revanche référencer un conteneur fonctionne. Suis-je en train de manquer quelque chose !!
Devtype
@Devtype no qui devrait fonctionner à la fois pour les blocs et les conteneurs. N'hésitez pas à créer une nouvelle question et à décrire votre problème en détail;)
Raphael au Digital Pianism
@RaphaelatDigitalPianism magento.stackexchange.com/questions/141891/…
Devtype