Twig Field Value

Proporciona filtros Twig para extraer etiquetas de campo, valores, datos sin procesar y entidades referenciadas en plantillas de Drupal.

twig_field_value
40,640 sites
162
drupal.org

Install

Drupal 11, 10, 9, 8 v2.0.5
composer require 'drupal/twig_field_value:^2.0'

Overview

Twig Field Value es un módulo de utilidad diseñado para desarrolladores de temas de Drupal que proporciona cuatro potentes filtros Twig para trabajar con render arrays de campos en plantillas. El módulo permite a los desarrolladores de temas imprimir etiquetas de campo y valores de campo de forma individual, dando control completo sobre la salida del campo sin el marcado predeterminado del contenedor de campo.

El módulo proporciona field_label para extraer etiquetas de campo, field_value para obtener valores de campo renderizados sin contenedores, field_raw para acceder directamente a valores de propiedades de campo sin procesar, y field_target_entity para recuperar objetos de entidad referenciados desde campos de referencia a entidades. Todos los filtros respetan el sistema de control de acceso de Drupal y propagan correctamente los metadatos de caché.

Este módulo es esencial para desarrolladores de temas que necesitan control detallado sobre la salida de campos, especialmente al crear diseños de campo personalizados, construir galerías de imágenes con texto alternativo, o iterar sobre entidades referenciadas de manera personalizada.

Features

  • Proporciona el filtro Twig field_label para extraer e imprimir solo la etiqueta de un render array de campo
  • Proporciona el filtro Twig field_value para devolver render arrays de valores de campo sin el marcado del contenedor de campo, soportando campos de valor único y múltiple
  • Proporciona el filtro Twig field_raw para acceder a valores de propiedades de campo sin procesar (ej., texto alternativo, target_id, value) directamente desde los datos del campo
  • Proporciona el filtro Twig field_target_entity para recuperar los objetos de entidad referenciados reales desde campos de referencia a entidades como Image, File, Taxonomy term, etc.
  • Respeta el sistema de control de acceso de Drupal - los campos e ítems de campo inaccesibles se ocultan correctamente
  • Propaga correctamente los metadatos de caché y adjuntos desde los render arrays de campo para asegurar un comportamiento de caché correcto
  • Soporta sitios multilingües recuperando automáticamente las traducciones de entidades desde el contexto
  • Funciona con varios tipos de campo incluyendo texto, imagen, archivo, referencia a entidad y campos de taxonomía
  • Compatible con el módulo Field Collection al soportar objetos padre #field_collection_item

Use Cases

Mostrar etiqueta y valor de campo por separado

Usa los filtros field_label y field_value para crear diseños de campo personalizados con control separado sobre el marcado de etiqueta y valor: <strong>{{ content.field_name|field_label }}</strong>: {{ content.field_name|field_value }}

Unir múltiples valores de campo con un separador

Para campos multivalor, usa field_value con safe_join para crear listas separadas por comas u otra salida formateada: {{ content.field_tags|field_value|safe_join(', ') }}

Construir salida de imagen personalizada con texto alternativo

Extrae la URL de la imagen y el texto alternativo por separado para construir marcado de imagen personalizado: <img src="{{ file_url(content.field_image|field_target_entity.uri.value) }}" alt="{{ content.field_image|field_raw('alt') }}">

Iterar sobre entidades referenciadas

Recorre múltiples entidades referenciadas para crear listas o diseños personalizados: {% for item in content.field_tags|field_target_entity %}<li>{{ item.label }}</li>{% endfor %}

Acceder a propiedades específicas de campo

Usa field_raw para acceder a cualquier propiedad de campo como value, format, alt, title, target_id, etc.: {{ content.field_link|field_raw('uri') }} o {{ content.field_text|field_raw('format') }}

Preservar metadatos de caché con entidades referenciadas

Al usar field_target_entity, renderiza el campo original para preservar los metadatos de caché: {{ content.field_ref|field_target_entity.label }}{% set dummy = content.field_ref|render %}

Tips

  • Siempre verifica si un campo multivalor tiene más de un valor antes de iterar: {% if content.field_name.1 %}...{% endif %}
  • Usa la función Twig file_url() con field_target_entity para generar URLs apropiadas para entidades de archivo/imagen
  • Los filtros respetan el control de acceso de Drupal - si un campo o entidad no es accesible, se devuelve NULL
  • Para campos de referencia a entidades, field_target_entity devuelve automáticamente la entidad traducida basándose en el contexto de idioma actual
  • Los metadatos de caché se propagan automáticamente al contexto de renderizado, asegurando una invalidación de caché correcta

Technical Details

Troubleshooting 4
El valor del campo devuelve NULL inesperadamente

Asegúrate de estar pasando un render array de campo (con #theme = 'field') al filtro. Los filtros solo funcionan con render arrays de campo, típicamente accedidos vía content.field_name en plantillas de entidad.

Los cambios en entidades referenciadas no se reflejan (problema de caché)

Al imprimir datos de entidades referenciadas usando field_target_entity, renderiza el campo original para capturar sus metadatos de caché: {% set dummy = content.field_name|render %}

field_raw devuelve NULL para campos de referencia a entidades con control de acceso a nivel de ítem

El filtro field_raw no soporta control de acceso a nivel de ítem de campo para campos de referencia a entidades. Esta es una limitación conocida documentada en el README. Considera usar field_target_entity que respeta correctamente el control de acceso a nivel de entidad.

field_target_entity devuelve NULL a pesar de haber ítems de campo visibles

Esto ocurre cuando se aplica control de acceso a nivel de ítem de campo (vía #access = FALSE en ítems individuales). El filtro no puede determinar qué entidad referenciada corresponde al ítem bloqueado y devuelve NULL por seguridad. Revisa los logs de Drupal para un mensaje de alerta.

Security Notes 4
  • El filtro field_raw omite los formateadores de campo y verificaciones de acceso a nivel de ítem de campo para campos de referencia a entidades - úsalo con precaución al mostrar contenido generado por usuarios
  • El filtro field_target_entity no puede aplicar control de acceso a nivel de ítem (#access = FALSE en ítems de campo individuales) - se registra una advertencia cuando se detecta esta situación
  • Todos los filtros verifican el control de acceso a nivel de campo - si el campo completo tiene #access = FALSE, no se devuelven datos
  • Los valores sin procesar de field_raw deben escaparse apropiadamente en las plantillas al mostrar contenido proporcionado por usuarios