Làm cách nào để lấy URL của một tệp nằm trong thư mục chủ đề?


6

Có cách nào để lấy URL của một hình ảnh nằm trong thư mục chủ đề không? Hoặc chỉ cần lấy URL của thư mục chủ đề?

Câu trả lời:


18

Bạn có thể sử dụng drupal_get_path()để có được đường dẫn đến thư mục chủ đề của bạn:

$path = drupal_get_path('theme', 'name_of_theme');

Từ đó bạn có thể chỉ định một tệp cụ thể như thế này:

$image_path = $path . '/images/image.jpg';

Bạn cũng có thể sử dụng path_to_theme(), nhưng hãy cảnh giác vì lợi nhuận từ việc này có thể thay đổi tùy thuộc vào bối cảnh mà nó được gọi trong:

Nó có thể trỏ đến chủ đề đang hoạt động hoặc mô-đun xử lý việc thực hiện theo chủ đề. Ví dụ, khi được gọi trong phạm vi của một cuộc gọi theo chủ đề, nó sẽ phụ thuộc vào nơi chức năng chủ đề được xử lý. Nếu được thực hiện từ một mô-đun, nó sẽ trỏ đến mô-đun. Nếu được thực hiện từ chủ đề đang hoạt động, nó sẽ trỏ đến chủ đề đang hoạt động. Khi được gọi ngoài phạm vi của một cuộc gọi theo chủ đề, nó sẽ luôn trỏ đến chủ đề đang hoạt động.


Cảm ơn bạn đã giúp đỡ. Và cuối cùng để tạo URL, tất cả những gì tôi cần là thêm "$ base_url" vào đầu đường dẫn.
Andrey Rudenko

1
Ngoài ra, cũng có thể sử dụng chức năng file_create_url(), vì vậy cuối cùng để có được URL tuyệt đối, bạn có thể gọi: $image_url = file_create_url($image_path);
Andrey Rudenko

Một mẹo gọn gàng cũng là để có được "đường dẫn đến chủ đề hiện tại" mà tôi sử dụng hàm này cho: function get_theme_path () {$ themename = biến_get ('theme_default', 'my_theme'); $ themepath = drupal_get_path ('theme', $ themename); trả lại $ themepath; }
Tommi Forsström

6
$imgurl = file_create_url(path_to_theme().'/images/blah.png');

description: dòng mã này sử dụng path_to_theme (), để lấy đường dẫn đến chủ đề, rồi file_create_url (), để tạo url cho tệp, để lấy URL của hình ảnh nằm trong thư mục chủ đề, theo yêu cầu của op.

Tôi có một downvote vì không mô tả nó, vì vậy bạn có :-)

nó cũng giống như câu trả lời được chấp nhận, chỉ với các bình luận được áp dụng để làm cho nó hoàn chỉnh hơn. xin lưu ý rằng nó đề cập đến thư mục chủ đề của chủ đề hiện tại, vì vậy nó chủ yếu hữu ích trong một mẫu chủ đề.


Nếu dòng mã này cung cấp câu trả lời cho câu hỏi, sẽ rất tốt nếu bao gồm mô tả cho nó.
Krishna Mohan

Nếu bạn có một trang đa ngôn ngữ thì đây là phương pháp để đi. drupal_get_path không xử lý các tiền tố ngôn ngữ trong các đường dẫn. vì vậy bạn có thể kết thúc với một đường dẫn tệp là /en/sites/all/theme/mytheme/image.png. file_create_url xử lý nó đúng cách.
mwallisch

0

Trong Drupal 8

global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
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.