Come posso ottenere l'URL corretto di un campo immagine?


7

Sto provando a stampare l'URL di un campo immagine usando il seguente codice.

<img src="<?php echo $field_company_logo['und'][0]['uri']; ?>" alt="<?php echo $company[0]['#markup']; ?>" />

Il codice mi dà un URI come public: //company-logos/image.png quando avrei bisogno di siti / default / files / company-logos / image.png.

Quale codice dovrei usare per stampare il percorso dell'immagine (cioè siti / default / file / company-logos / image.png)?

Risposte:


20

Si desidera utilizzare la funzione drupal_realpath () per convertire l'URI nel percorso del file system effettivo.

echo drupal_realpath($field_company_logo['und'][0]['uri']);

È inoltre possibile utilizzare file_create_url () per ottenere l'URL effettivo dell'immagine, anziché un percorso file locale.

E il modo corretto di rendere un'immagine è eseguirla theme_image():

echo theme('image', array(
  'path' => file_create_url($field_company_logo['und'][0]['uri']),
  'alt' => check_plain($company[0]['#markup']),
));

Inoltre, l'accesso ai dati del campo nel modo in cui lo stai facendo non è il metodo preferito. Dai un'occhiata a field_get_items () e all'esempio dettagliato nel post sul blog Rendering Drupal Fields (nel modo giusto) .


2
+1 per l'utilizzo della funzione tema, anche se non penso che vorresti più drupal_realpath (). La funzione tema trasformerà automaticamente l'URI.
Les Lim,

file_create_url ha funzionato per me, grazie! realpath mi ha dato l'url assoluto, ma che non avrebbe reso.
Joe Taylor,

Puoi passare direttamente il percorso del flusso (pubblico: // ...) e genererà automaticamente il percorso giusto.
Eduardo Chongkan,

10

Se vuoi letteralmente trasformare un URI in un vero URL, allora vuoi la funzione file_create_url () , che viene utilizzata in questo modo:

$url = file_create_url($uri);

Ma potresti trovare più facile usare una funzione tema, come suggerisce Yuriy Babenko:

$image_vars = array(
  'path' => $field_company_logo['und'][0]['uri'],
  'alt' => $company[0]['#markup'],
);
echo theme('image', $image_vars);

Puoi facilmente adattarlo per usare theme_image_style () invece, se vuoi una derivata dimensionata della tua immagine.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.