J'ai un type de contenu, basique, où j'ai ajouté un champ Paragraphe (field_pr) qui a deux champs: field_text, field_color. J'ai un twig node node - basic - full.html.twig où je veux imprimer la valeur du champ de paragraphe (node.field_pr) car il peut y avoir plus d'une valeur. Le nombre de paragraphe qui peut être ajouté est limité à 10, alors pensez à node.field_pr ayant jusqu'à 10 valeurs.
Lorsque j'imprime le tableau pour content.field_pr, j'obtiens un tableau énorme, mais je ne veux que les valeurs de field_pr.field_text et field_pr.field_color. Comment pourrais-je faire cela à partir du modèle de nœud twig? Je ne suis pas en mesure de le faire.
J'ai essayé ce qui suit mais je n'arrive pas à accéder aux valeurs. Qu'est-ce que je rate?
{% for field in content.field_pr %}
{{ field[loop.index0].entity.field_text.value }}
{{ field[loop.index0].entity.field_color.value }}
{% endfor %}
{% for field in content.field_pr %}
{{ field[loop.index0]['#paragraph'].field_text.value }}
{{ field[loop.index0]['#paragraph'].field_color.value }}
{% endfor %}
Voici une image du tableau qui est imprimée pour le champ node.field_pr.
Je ne sais pas si c'est possible avec votre approche actuelle. Voici comment j'aborderais cela.
Dans votre fichier de modèle de noeud, faites simplement un {{ content.field_pr }}
Créez un fichier modèle pour votre paragraphe.
paragraphe __ [mode_vue] (par exemple, paragraphe - default.html.twig)
paragraphe __ [type] (par exemple paragraphe - image.html.twig)
paragraphe __ [type] __ [mode_vue] (par exemple paragraphe - image - default.html.twig)
Dans le paragraphe - [type] .html.twig vous faites {{ content.field_text }}
et {{ content.field_color }}
J'ai compris celui-ci. Avec Twig Tweak activé, vous pouvez imprimer des paragraphes à partir de l'objet nœud sans utiliser de contenu:
{% for item in node.field_my_paragraph_field %}
{{ drupal_entity('paragraph', item.target_id) }}
{% endfor %}
Pour imprimer des champs de paragraphe dans une boucle (pour les curseurs, etc.) dans page--content-type.html.twig
utilisez l'extrait ci-dessous:
{% for item in node.field_paragraph_mac_name %}
{{ item.entity.field_title.value }}
<img src="{{ file_url(item.entity.field_image.entity.fileuri) }}" />
{% endfor %}
S'appuyant sur la réponse de user33560. Si vous avez des paragraphes imbriqués et que vous souhaitez imprimer ou obtenir les champs de paragraphe de deuxième niveau à partir du premier niveau paragraph.html.twig
:
{% set paragraph_name = content.field_paragraph_name %}
{% for item in paragraph_name['#items'] %}
{{ drupal_entity('paragraph', item.target_id) }}
{% endfor %}
Vous pouvez également utiliser {{ content.field_paragraph_name }}
Pour imprimer tous les éléments de paragraphe ou imprimer un sous-ensemble tel que {{ content.field_paragraph_name.field_example }}
. Utilisez {{ content.field_paragraph_name|without('field_example') }}
pour supprimer temporairement l'impression d'un élément enfant donné.