Imprimir datos usuario en Twig Drupal | get user details in the template page.html.twig

Descripción

En Drupal 11 con Twig, la forma correcta de mostrar la imagen del usuario actual depende de si tienes acceso al objeto user o solo al current_user.

Instrucciones

1️⃣ Forma recomendada (cargando la entidad del usuario)

Si solo tienes current_user, puedes cargar la entidad y luego acceder al campo user_picture:

 
{% set user = drupal_entity('user', current_user.id) %} {{ user }}

Pero esto imprime todo el usuario, no solo la imagen.


2️⃣ Mostrar solo la imagen del usuario

La forma más común es acceder directamente al campo:

 
{% set user = drupal_entity('user', current_user.id, 'default') %} {{ user.user_picture }}

3️⃣ Si tienes el objeto user disponible

En algunos templates (por ejemplo user.html.twig):

 
{% if user.user_picture.entity %}  <img src="{{ file_url(user.user_picture.entity.uri.value) }}" alt="{{ user.name.value }}"> {% endif %}

4️⃣ Usando content.user_picture (mejor para theming)

Si el campo viene en el render array:

 
{{ content.user_picture }}

Drupal aplicará automáticamente:

  • estilos de imagen

  • lazy loading

  • cache correcto


💡 Buenas prácticas en Drupal 11

  • Prefiere content.user_picture si existe.

  • Evita acceder directo a uri.value si Drupal ya generó el render array.

Código

{# Obtener la imagen del usuario #}

{{ drupal_field('user_picture', 'user', user.id) }}

{# Imprimir el nombre del usuario #}

{{ user.displayname }}

{# Imprimir enlace para editar usuario #}

<a href="/user/{{ user.id }}/edit">

 

Más Snippets