Cách thích hợp để có được đường dẫn cơ sở khi bao gồm một hình ảnh từ một mô-đun?


7

Khi chỉ sử dụng drupal_get_path () để đưa hình ảnh từ thư mục mô-đun, điều này tạo ra các url không tồn tại khi sử dụng tiền tố ngôn ngữ.

Tôi đã thấy một vài mô-đun bổ sung base_path () để giải quyết vấn đề này, nhưng trên trang api cho base_path () ai đó nhận xét rằng bạn nên sử dụng DRUPAL_ROOThằng số. Cách được đề nghị là gì?

Câu trả lời:


8

Lõi Drupal sử dụng file_create_url()cho các hình ảnh bên trong như thế này (ví dụ: xử lý favicon.ico mặc định trong bao gồm / theme.inc).

Điều này đảm bảo rằng hook_file_url_alter()được gọi ( mô-đun CDN thực hiện điều này), cơ sở được đặt và mọi thứ được thoát đúng.

Vì vậy, tôi sẽ sử dụng

$path = drupal_get_path('module', 'mymodle');
$url = file_create_url($path . '/images/some.jpg');

2
Đáng chú ý, file_create_urlđược sử dụng bởitheme_image
David Thomas

1
Vâng, và câu trả lời của @ DavidThomas là phù hợp nhất nếu bạn muốn một phần tử <img> thực tế.
mpdon Arena

4

Bạn đã có thể sử dụng

theme_image

ví dụ:

  $variables = array(
    'path' => drupal_get_path('module', 'my_module').'/images/image.jpg', 
    'alt' => 'My image',
    'title' => 'My image title',
    'attributes' => array('class' => array('my-image')),
  );
  $img = theme('image', $variables);

1

Bạn nên sử dụng $ base_url với drupal_get_path () .

global $base_url;
$img_path = $base_url . '/' . drupal_get_path('module', 'YOUR_MODULE') . '/images/your_image.png';

Theo cách này, đường dẫn hình ảnh sẽ không bị ảnh hưởng bởi cài đặt tiền tố url của trang web i18n.



0

Đôi khi bạn có thể cần phải vượt qua một langage NULL trong chức năng url.

Ví dụ từ Commerce_paypal

Không hoạt động liên kết (mã gốc)

  return url(drupal_get_path('module', 'commerce_paypal_ec') . '/images/paypal-ec-logo.gif', array('absolute' => TRUE));

Liên kết làm việc (mã bị hack)

  return url(drupal_get_path('module', 'commerce_paypal_ec') . '/images/paypal-ec-logo.gif', array('absolute' => TRUE, 'language' => ""  ));

Lưu ý: Tất nhiên, hack các mô-đun đóng góp không bao giờ được nhận lại.

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.