Ya sea en un template o en un módulo, en algunas ocasiones necesitamos obtener el path (o URL) absoluto de una imágen o de un archivo desde su forma public://uri interna de Drupal
Existen varias formas de obtener el URL de un archivo pero me enfocaré en dos formas que considero son más limpias y más directas, la primera es con file_create_url()
la cual funciona directamente con el path public:// que maneja internamente Drupal, y la segunda es image_style_url()
que sirve para obtener una imágen con un Image style definido, de la siguiente forma:
$imagen=$node->field_image; //mi nodo tiene un FIELD tipo IMAGE llamado field_image print_r($imagen['und'][0]);print PHP_EOL; // imprimo todo lo que tiene el field_imagen en el lenguaje default primer elemento print_r($imagen['und'][0]['uri']);print PHP_EOL; //imprimimos sólo el contenido de 'uri' que es nuestro path interno de Drupal print_r(file_create_url($imagen['und'][0]['uri'])); //usamos el URI interno para obtener el URL absoluto de la localización de nuestro archivo print PHP_EOL; print_r(image_style_url("miestilo", $imagen['und'][0]['uri'])); //obtenemos el URL absoulto de la imágen con un estilo aplicado print PHP_EOL;
El código anterior nos imprime lo siguiente:
Array ( [fid] => 31 [uid] => 1 [filename] => miImagen.jpg [uri] => public://field/image/miImagen.jpg [filemime] => image/jpeg [filesize] => 66396 [status] => 1 [timestamp] => 1443569777 [rdf_mapping] => Array ( ) [alt] => [title] => [width] => 884 [height] => 410 ) public://field/image/miImagen.jpg http://midominio.com/sites/default/files/field/image/miImagen.jpg http://midominio.com/sites/default/files/styles/miestilo/public/field/image/miImagen.jpg?itok=izdt4PCp
El primer bloque es el contenido completo del objeto que conforma el field (campo) image, donde podemos ver que dentro de los valores que nos devuelve tenemos el atributo URI, el cual contiene el path interno que maneja Drupal para los archivos, en éste caso para nuestra imágen.
Posteriormente tenemos el path interno de nuestro archivo directo del atributo URI (línea 21). Después tenemos el URL absoulto a la imágen devuelto por el método file_create_url (línea 22). Finalmente el URL absoluto de la misma imágen pero con un Image Style llamado "miestilo" aplicado a la imágen por medio del método image_style_url (línea 23).
Éstas son las dos formas de obtener el link, url o path absoluto de una imágen o de un archivo desde su URI interno de Drupal, como comenté: existen otras formas, pero considero éstas dos funciones las más rápidas y limpias para lograr el mismo propósito.
¡Felices Sentencias!