Magento 2: come aggiungere testo all'interno del contenitore tramite XML


11

Sto tentando di eseguire il rendering di una singola riga di testo prima di un elenco di collegamenti nel piè di pagina. La creazione di un file modello per fare ciò sembra essere uno spreco di risorse per questa attività. A quanto ho capito, ho potuto produrre testo con un Magento\Framework\View\Element\Textblocco nel 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>

Il precedente non produce alcun risultato e non sono sicuro che ciò non sia supportato, se sto semplicemente facendo qualcosa di sbagliato o se esiste un altro metodo più appropriato per ottenere questo risultato.

Per essere chiari, quello che sto vedendo attualmente è:

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

quando voglio vedere:

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

Eventuali suggerimenti?

Risposte:


22

È necessario utilizzare l'argomento direttamente senza l'array.

Invece di

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

Hai bisogno:

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

Alternativa

Puoi anche provare con il <action>tag:

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

Aggiunta diretta di un div

Puoi anche aggiungere un div direttamente nel testo con quanto segue:

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

Come aggiungerebbe un argomento all'interno di un blocco esistente, ad esempio il blocco product.info.review, può essere referenziato e aggiunto con un altro argomento di tipo stringa?
Devtype,

@Devtype totalmente. Puoi usarlo <referenceBlock name="product.info.review">per farlo
Raffaello al Pianismo Digitale,

@RaphaelatDigitalPianism che fa riferimento a un blocco non funziona per me, d'altra parte fare riferimento a un contenitore funziona. Mi sto perdendo qualcosa!!
Devtype,

@Devtype no che dovrebbe funzionare sia per i blocchi che per i contenitori. Sentiti libero di creare una nuova domanda e di descrivere il tuo problema in dettaglio;)
Raffaello al Pianismo digitale

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.