2011-10-07 12 views
20

Me gustaría obtener la ruta de la imagen de un campo. Estoy en un nodo y necesito la URL de la imagen para ponerla como imagen de fondo en css en línea. No puedo encontrar la solución. ¿Me puedes ayudar?Drupal 7 Get image field path

Respuesta

49

para obtener sólo el camino de una imagen desde su URI:

file_create_url($node->field_image['und'][0]['uri']);

Más información sobre file_create_url() se puede encontrar aquí: http://api.drupal.org/api/drupal/includes%21file.inc/function/file_create_url/7

Para obtener la ruta de una imagen creada con un estilo de imagen de su URI use:

image_style_url($style, $node->field_image['und'][0]['uri']);

Más información sobre image_style_url() se puede encontrar aquí: http://api.drupal.org/api/drupal/modules!image!image.module/function/image_style_url/7

+0

me salvó la vida. ¡Gracias! –

+2

Esto no tiene en cuenta los campos multilingües. Ver la respuesta por @Gergely a continuación. Incluso si cree que su sitio "nunca" tendrá que admitir traducciones, POR FAVOR, no haga esto. Para obtener más información, consulte http://www.computerminds.co.uk/articles/rendering-drupal-7-fields-right-way –

+1

wonderful..it ayudó –

5

que en algún momento utilizar este:

$node = node_load($nid); 
$img_url = $node->field_userimage['und'][0]['uri']; 

<img src="<?php print image_style_url($style, $img_url) ?>" /> 
+3

También puede usar [theme_image_style()] (http://api.drupal.org/api/drupal/modules--image--image.module/function/theme_image_style/7) en lugar de hard- codificar las etiquetas '' – Laxman13

+3

utilizando la función de tema sería muy preferido: 'theme ('image_style', array ('style_name' => 'name', 'path' => $ node-> field_userimage ['und'] [ 0] ['uri'], 'alt' => 'Texto alternativo')); ' – Clive

+0

Se ve bien. Debería comenzar a usar esas funciones. – Kristoffer

18

Temo, ninguna de las soluciones anteriores son correctas. No siguen los estándares de Drupal.

// field_video_image is the name of the image field 

// using field_get_items() you can get the field values (respecting multilingual setup) 
$field_video_image = field_get_items('node', $node, 'field_video_image'); 

// after you have the values, you can get the image URL (you can use foreach here) 
$image_url = file_create_url($field_video_image[0]['uri']); 

Más detalles aquí: http://www.computerminds.co.uk/articles/rendering-drupal-7-fields-right-way

+3

El código anterior es perfecto. En general, la mayoría de la gente no necesitaría hacer esto como se describió anteriormente, pero si desea escribir código que cumpla con los estándares de Drupal y no se rompa cuando se modifiquen las cosas o lo que sea, entonces no se puede enfatizar cuán importante es esto. En referencia a los elementos en el código como $ objeto ['und'] [0] ['elemento'] es una práctica muy mala. Siempre use field_get_items o un equivalente. –

1

También puede utilizar el módulo Image URL Formatter. Permite cambiar el formato de campo con el fin de obtener sólo la URL:

Drupal field settings

Bono: trabaja con Vistas así:

enter image description here

0

para obtener la URL estilo de la imagen:

$field = field_get_items('node', $node, 'field_image'); 
$image_url = image_style_url('landingpage_slider', $field[0]['uri']);