¿Cómo obtengo la URL correcta de un campo de imagen?


7

Estoy tratando de imprimir la URL de un campo de imagen usando el siguiente código.

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

El código me da un URI como public: //company-logos/image.png cuando necesito sitios / default / files / company-logos / image.png.

¿Qué código debo usar para imprimir la ruta de la imagen (es decir, sitios / default / files / company-logos / image.png)?

Respuestas:


20

Desea utilizar la función drupal_realpath () para convertir el URI en la ruta real del sistema de archivos.

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

También puede usar file_create_url () para obtener la URL real de la imagen, en lugar de una ruta de archivo local.

Y la forma correcta de representar una imagen es ejecutarla theme_image():

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

Además, acceder a los datos de campo de la manera que lo está haciendo no es el método preferido. Eche un vistazo a field_get_items () y al ejemplo detallado en la entrada de blog Rendering Drupal Fields (la forma correcta) .


2
+1 por usar la función de tema, aunque no creo que realmente quieras ya drupal_realpath (). La función de tema transformará automáticamente el URI.
Les Lim

file_create_url funcionó para mí, ¡gracias! realpath me dio la url absoluta, aunque no se mostraría.
Joe Taylor

Puede pasar la ruta de transmisión directamente (public: // ...) y generará automáticamente la ruta correcta.
Eduardo Chongkan

10

Si literalmente solo quiere transformar un URI en una URL real, entonces quiere la función file_create_url () , que se usa así:

$url = file_create_url($uri);

Pero puede que le resulte más fácil usar una función de tema, como sugiere Yuriy Babenko:

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

Puede adaptar esto fácilmente para usar theme_image_style () en su lugar, si desea una derivada de tamaño de su imagen.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.