web-dev-qa-db-fra.com

Comment rendre le module de paragraphes dans twig

Je crée un modèle personnalisé pour mon thème et je crée une page page.html.twig. Je veux appeler des champs de nœuds individuels dans des lignes distinctes. J'ai pu tout afficher avec succès, sauf le champ de paragraphe.

J'ai essayé.

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

Et rien n'a fonctionné. Quelqu'un a-t-il une idée de la structure correcte à appeler dans le module de paragraphe?

Ou est-ce qu'une fonction fonctionnerait

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

Ajoutez d'abord un paragraph--your_paragraph_machine_name.html.twig Au répertoire des modèles de votre thème.

Vous pouvez accéder à vos champs de paragraphe en ajoutant des variables twig dans un format similaire à {{ content.field_your_field }}.

Si vous ne voulez que la valeur du champ, c'est un peu plus compliqué. Par exemple, si vous aviez un champ Liste (texte) et que vous vouliez obtenir la valeur de l'option sélectionnée, vous pourriez faire quelque chose comme:

{% 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 %}

Vous pouvez toujours exécuter une {{ dump(content) }} pour voir la structure et obtenir les valeurs que vous recherchez. J'espère que cela t'aides!

EDIT: Vous pouvez éviter toutes les boucles imbriquées idiotes. L'exemple ci-dessus doit être écrit comme:

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

Pour un champ Texte (simple), il pourrait ressembler à quelque chose comme:

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

Pour obtenir une valeur d'URL à partir d'un champ Lien, j'ai vu des suggestions comme:

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

Mais il aurait un préfixe "internal: /", donc j'ai eu plus de chance avec quelque chose comme ça:

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