Este dilema se puede tratar de diversas formas, sin embargo te enseñamos la respuesta más completa en nuestra opinión.
Solución:
Un campo de imagen almacena la identificación del archivo en target_id
. Puede acceder a la identificación del archivo con:
node.field_main_image.target_id
Hay una segunda propiedad en el campo de la imagen. Es para la entidad a la que se hace referencia, en este caso el objeto de archivo. Esto no es visible en la salida de depuración, porque se calcula:
node.field_main_image.entity
En el objeto de archivo se encuentra el campo uri
node.field_main_image.entity.uri.value
que puede usar para obtener la URL de la imagen original
file_url(node.field_main_image.entity.uri.value)
o la url de un estilo de imagen
node.field_main_image.entity.uri.value
El filtro para el estilo de imagen es parte de este módulo que debes instalar:
https://www.drupal.org/project/twig_tweak
No puede obtener la URL de la imagen directamente en la plantilla twig ya que los campos de imagen solo tienen una identificación de archivo de imagen. Cada imagen en Drupal 8 es una entidad de archivo.
Puedes probar en template_preprocess_node()
:
$image_file_id = $variables['node']->field_image[0]->target_id;
$image_file = DrupalfileEntityFile::load($image_file_id);
$uri = $image_file->uri->value;
$variables['url']=file_create_url($uri);
Nos puedes apoyar nuestro estudio poniendo un comentario o dejando una valoración te damos las gracias.