Bagaimana cara mendapatkan URL bidang gambar yang benar?

7

Saya mencoba untuk mencetak URL bidang gambar menggunakan kode berikut.

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

Kode memberi saya URI seperti publik: //company-logos/image.png ketika saya membutuhkan situs / default / files / company-logos / image.png.

Kode apa yang harus saya gunakan untuk mencetak jalur gambar (yaitu situs / default / file / logo perusahaan / image.png)?

Joe Taylor
sumber

Jawaban:

20

Anda ingin menggunakan fungsi drupal_realpath () untuk mengubah URI menjadi jalur sistem file yang sebenarnya.

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

Anda juga bisa menggunakan file_create_url () untuk mendapatkan URL aktual ke gambar, sebagai lawan dari filepath lokal.

Dan cara yang benar untuk membuat gambar adalah dengan menjalankannya theme_image():

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

Juga, mengakses data lapangan seperti yang Anda lakukan bukanlah metode yang disukai. Lihatlah field_get_items () dan contoh terperinci dalam entri blog Rendering Drupal Fields (cara yang benar) .

Yuriy Babenko
sumber
2
+1 untuk menggunakan fungsi tema, meskipun saya tidak berpikir Anda benar-benar ingin drupal_realpath () lagi. Fungsi tema akan secara otomatis mengubah URI.
Les Lim
file_create_url bekerja untuk saya, terima kasih! realpath memberi saya url absolut meskipun yang tidak akan ditampilkan.
Joe Taylor
Anda dapat melewati jalur aliran secara langsung (publik: // ...) dan secara otomatis akan menghasilkan jalur yang benar.
Eduardo Chongkan
10

Jika Anda benar-benar hanya ingin mengubah URI menjadi URL yang sebenarnya, maka Anda ingin fungsi file_create_url () , yang digunakan seperti ini:

$url = file_create_url($uri);

Tetapi Anda mungkin merasa lebih mudah menggunakan fungsi tema, seperti yang disarankan Yuriy Babenko:

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

Anda dapat dengan mudah mengadaptasi ini untuk menggunakan theme_image_style () , jika Anda ingin turunan ukuran gambar Anda.

Les Lim
sumber
2

Anda dapat menggunakan modul Formatter URL Gambar . Memungkinkan untuk mengubah format bidang agar hanya mendapatkan URL:

Pengaturan bidang Drupal

Bonus: berfungsi dengan Views juga:

masukkan deskripsi gambar di sini

Yesaya
sumber