Cómo representar el módulo de párrafos en ramita

8

Estoy creando una plantilla personalizada para mi tema y estoy construyendo una página page.html.twig. Quiero llamar a los campos de nodos individuales en filas separadas. He podido mostrar con éxito todo excepto el campo de párrafo.

Yo he tratado.

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

Y nada ha funcionado. ¿Alguien tiene alguna idea de la estructura correcta para llamar en el módulo de párrafo?

O funcionaría para una función

{% if node.field_benefits %}
{% for field_items in node.field_benefits %}
{{ field_item.value }}
{% endfor %}
{% endif %}
Megan McGowan
fuente
page.html.twig no maneja nodos ... solo la plantilla de página general. Estás utilizando la plantilla incorrecta. Le sugiero que anule la plantilla de nodo en su lugar (o al menos lea sobre la forma en que se accede a las plantillas de ramita). Además, activar la depuración de ramitas y mirar el código fuente lo ayudará a determinar qué plantilla debe anular.
NikLP
Ok @NikLP Moví todo al nivel de nodo, pero aún no puedo procesar el módulo de párrafos. Estoy usando el campo que obtuve de la depuración y kint y aún muestra una fila vacía
Megan McGowan
Tal vez mira esto? drupal.org/node/2444893
NikLP

Respuestas:

7

Primero agregue una paragraph--your_paragraph_machine_name.html.twigal directorio de plantillas de su tema.

Se puede acceder a los campos de párrafo agregando variables de ramita en un formato similar a {{ content.field_your_field }}.

Si solo desea el valor del campo, es un poco más complicado. Por ejemplo, si tenía un campo Lista (texto) y deseaba obtener el valor de la opción seleccionada, podría hacer algo como:

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

Siempre puede ejecutar a {{ dump(content) }}para ver la estructura y obtener los valores que está buscando. ¡Espero que esto ayude!

EDITAR: puede evitar todos los bucles anidados tontos. El ejemplo anterior debe escribirse como:

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

Para un campo de Texto (sin formato) podría verse así:

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

Para obtener un valor de URL de un campo Enlace, he visto sugerencias como:

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

Pero tendría un prefijo "interno: /", así que tuve más suerte con algo como esto:

{{ content.field_link.0['#title'] %}
jimafisk
fuente
Puede usar paragraph.field_my_text.valuecualquier plantilla de párrafo para generar el valor plano y sin formato, como node.field_my_text.valueen una plantilla de nodo.
Philipp Michael
¿Cómo imprime el párrafo - your_paragraph_machine_name.html.twig desde su plantilla principal?
Sam