Làm cách nào để có được URL chính xác của trường hình ảnh?


7

Tôi đang cố gắng in URL của trường hình ảnh bằng mã sau đây.

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

Mã này cung cấp cho tôi một URI như công khai: //company-logos/image.png khi tôi cần các trang web / default / files / company-logo / image.png.

Tôi nên sử dụng mã nào để in đường dẫn hình ảnh (ví dụ: các trang web / mặc định / tệp / công ty-logo / image.png)?

Câu trả lời:


20

Bạn muốn sử dụng hàm drupal_realpath () để chuyển đổi URI thành đường dẫn hệ thống tập tin thực tế.

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

Bạn cũng có thể sử dụng file_create_url () để lấy URL thực tế cho hình ảnh, trái ngược với filepath cục bộ.

Và cách chính xác để hiển thị hình ảnh là chạy nó qua theme_image():

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

Ngoài ra, truy cập dữ liệu trường theo cách bạn đang thực hiện không phải là phương pháp ưa thích. Hãy xem field_get_items () và ví dụ chi tiết trong mục nhập blog Kết xuất Drupal Field (đúng cách) .


2
+1 để sử dụng chức năng chủ đề, mặc dù tôi không nghĩ rằng bạn thực sự sẽ muốn drupal_realpath () nữa. Chức năng chủ đề sẽ tự động chuyển đổi URI.
Les Lim

file_create_url đã làm việc cho tôi, cảm ơn! realpath đã cho tôi url tuyệt đối mặc dù điều đó sẽ không hiển thị.
Joe Taylor

Bạn có thể truyền trực tiếp đường dẫn luồng (công khai: // ...) và nó sẽ tự động tạo đúng đường dẫn.
Eduardo Chongkan

10

Nếu bạn thực sự chỉ muốn chuyển đổi một URI thành một URL thực tế, thì bạn muốn hàm file_create_url () , được sử dụng như thế này:

$url = file_create_url($uri);

Nhưng bạn có thể thấy dễ dàng hơn khi sử dụng chức năng chủ đề, như Yuriy Babenko gợi ý:

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

Bạn có thể dễ dàng điều chỉnh điều này để sử dụng theme_image_style () , nếu bạn muốn một đạo hàm có kích thước của hình ảnh của bạn.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.