Come rendere il modulo paragrafi in ramoscello


8

Sto creando un modello personalizzato per il mio tema e sto costruendo una pagina page.html.twig. Voglio chiamare i singoli campi del nodo in righe separate. Sono stato in grado di visualizzare correttamente tutto tranne il campo paragrafo.

Ho provato.

{{ node.field_benefits }}
{{ node.field_benefits.value }}
{{ paragraph.field_benefits }}
{{ paragraph.field_benefits.value }}
{{ node.paragraphs.field_benefits }}

E nulla ha funzionato. Qualcuno ha idea della struttura corretta da chiamare nel modulo paragrafo?

O funzionerebbe per una funzione

{% if node.field_benefits %}
{% for field_items in node.field_benefits %}
{{ field_item.value }}
{% endfor %}
{% endif %}

page.html.twig non gestisce i nodi ... solo il modello di pagina generale. Stai utilizzando il modello sbagliato. Suggerisco invece di sovrascrivere il modello di nodo (o almeno leggere il modo in cui si accede ai modelli di ramoscello). Inoltre, l'attivazione del debug del ramoscello e la visualizzazione del codice sorgente ti aiuteranno ad accertare quale modello dovresti ignorare.
NikLP,

Ok @NikLP Ho spostato tutto a livello di nodo, ma non riesco ancora a rendere il modulo paragrafi - Sto usando il campo che ho ottenuto dal debug e da kint e mostra ancora una riga vuota
Megan McGowan,

Forse dai un'occhiata? drupal.org/node/2444893
NikLP

Risposte:


7

Per prima cosa aggiungi paragraph--your_paragraph_machine_name.html.twiga alla directory dei modelli del tuo tema.

L'accesso ai campi del paragrafo può essere effettuato aggiungendo variabili ramoscello in un formato simile a {{ content.field_your_field }}.

Se vuoi solo il valore del campo, è un po 'più complicato. Ad esempio, se avessi un campo Elenco (testo) e volessi ottenere il valore dall'opzione selezionata, potresti fare qualcosa del tipo:

{% for item in content.field_select_list %}
  {% if item is iterable %}
    {% for key,value in item %}
      {% if not value is iterable %}
        {% if key == '#markup' %}
          {{ value }}
        {% endif %}
      {% endif %}
    {% endfor %}
  {% endif %}
{% endfor %}

Puoi sempre eseguire a {{ dump(content) }}per vedere la struttura e ottenere i valori che stai cercando. Spero che sia di aiuto!

EDIT: puoi evitare tutti i loop nidificati sciocchi. L'esempio sopra dovrebbe essere scritto come:

{% set value = content.field_select_list.0['#markup'] %}
{{ value }}

Per un campo di testo (semplice) potrebbe essere simile a:

{{ content.field_text.0['#context'].value }}

Per ottenere un valore URL da un campo Link ho visto suggerimenti come:

{{ content.field_link['#items'].0.value.uri }}

Ma avrebbe un prefisso "interno: /", quindi ho avuto più fortuna con qualcosa del genere:

{{ content.field_link.0['#title'] %}

È possibile utilizzare paragraph.field_my_text.valuein qualsiasi modello di paragrafo per generare il valore semplice, non formattato, proprio come node.field_my_text.valuein un modello di nodo.
Philipp Michael,

come si stampa il paragrafo - your_paragraph_machine_name.html.twig dal modello principale?
Sam,
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.