2011-10-07 33 views
20

Vorrei ottenere il percorso dell'immagine di un campo. Sono in un nodo e ho bisogno dell'URL dell'immagine per metterlo come immagine di sfondo in css in linea. Non riesco a trovare la soluzione. Mi potete aiutare?Drupal 7 Ottieni percorso campo immagine

risposta

49

per ottenere solo il percorso di un'immagine da esso è URI:

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

Maggiori informazioni sul file_create_url() può essere trovato qui: http://api.drupal.org/api/drupal/includes%21file.inc/function/file_create_url/7

Per ottenere il percorso di un'immagine creata utilizzando uno stile di immagine dal suo uso URI:

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

Maggiori informazioni sul image_style_url() può essere trovato qui: http://api.drupal.org/api/drupal/modules!image!image.module/function/image_style_url/7

+0

mi ha salvato la vita. Grazie! –

+2

Questo non tiene conto dei campi multilingue. Vedi la risposta di @Gergely qui sotto. Anche se pensi che il tuo sito "non avrà mai" bisogno di supportare le traduzioni, PER FAVORE non farlo. Per ulteriori informazioni, consultare http://www.computerminds.co.uk/articles/rendering-drupal-7-fields-right-way –

+1

wonderful..it ha aiutato –

5

Io qualche volta uso questo:

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

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

Puoi anche usare [theme_image_style()] (http://api.drupal.org/api/drupal/modules--image--image.module/function/theme_image_style/7) invece di hard- codificare i tag '' – Laxman13

+3

utilizzando la funzione tema sarebbe molto preferito: 'theme ('stile_immagine', array ('style_name' => 'nome', 'percorso' => $ nodo-> campo_utenteimmagine ['und'] [ 0] ['uri'], 'alt' => 'Alt text')); ' – Clive

+0

Sembra carino. Dovrei iniziare a usare quelle funzioni. – Kristoffer

18

ho paura, nessuna delle soluzioni di cui sopra siano corrette. Non seguono gli standard di 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']); 

Maggiori dettagli qui: http://www.computerminds.co.uk/articles/rendering-drupal-7-fields-right-way

+3

Il codice sopra è perfetto. Generalmente la maggior parte delle persone non avrebbe bisogno di fare ciò come descritto sopra, ma se si desidera scrivere un codice che rispetti gli standard Drupal e non si rompa quando le cose sono cambiate o altro, non si può enfatizzare l'importanza di ciò. Fare riferimento a elementi in codice come $ oggetto ['und'] [0] ['elemento'] è una pratica estremamente negativa. Usa sempre field_get_items o un equivalente. –

1

È inoltre possibile utilizzare il modulo Image URL Formatter. Permette di cambiare il formato del campo al fine di ottenere solo l'URL:

Drupal field settings

Bonus: funziona con Vista così:

enter image description here

0

per ottenere stile di immagine url:

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