jueves, 14 de junio de 2012

Convertir uri de Drupal 7

Cuando estamos trabajando con ficheros en Drupal 7 (Imágenes, vídeos, documentos, etc) y queremos hacer algo "a mano", es decir, desde el template del nodo queremos hacerlo a nuestra manera, vemos que al pintar el array de cualquier archivo adjunto a un nodo obtenemos algo así:

stdClass Object
(
    [uid] => 1
    [status] => 0
    [filename] => image_1.jpg
    [uri] => public://subcarpeta/image_1.jpg
    [filemime] => image/jpeg
    [filesize] => 121406
    [source] => field_imagen_und_4
    [destination] => public://subcarpeta/image_1.jpg
    [timestamp] => 1339667493
    [fid] => 24
)


Si queremos hacer algo así:
< img src="$imagen['uri']" />
No podremos, ya que esa "uri" es interna de Drupal y sólo él sabe cómo interpretarla.

Para obtener la ruta real al archivo debemos hacer lo siguiente:
$url = file_create_url('public://subcarpeta/image_1.jpg');
Esto nos devuelve una ruta absoluta al fichero tal de la forma http://www.example.com/sites/default/files/subcarpeta/imagen_1.jpg

Para tener la ruta referente a la raíz de Drupal podemos parsear la url con php:
$url = parse_url($url);
La ruta referente a Drupal es el parámetro path:
$path = $url['path'];

No hay comentarios:

Publicar un comentario