Trong page.html.twig
bạn sẽ có một {{ base_path }}
biến làm việc . Tại sao nó không có sẵn trong mọi mẫu, tôi không biết. Theo tôi nghĩ nó nên như vậy và mọi thứ khác có vẻ lộn xộn, giải pháp ưa thích của tôi là làm chính xác như Drupal làm trong chức năng trang tiền xử lý cho bất kỳ nơi nào tôi cần.
Để {{ base_path }}
sẵn sàng chặn các mẫu trong một chủ đề có tên ví dụ, hãy thêm mã này vào example.theme
tệp:
/**
* Implements hook_preprocess_block().
*/
function example_preprocess_block(&$variables) {
$variables['base_path'] = base_path();
}
Như đã lưu ý trong câu trả lời được chấp nhận do MPD cung cấp, nếu nhận được URL của một nút hoặc thực thể khác, có các phương pháp để làm tất cả cho bạn.
Tuy nhiên, có những lý do để có được base_path, chẳng hạn như khi hiển thị hình ảnh nằm trong thư mục chủ đề của bạn. {{ directory }}
cung cấp đường dẫn đến thư mục chủ đề, nhưng nó rời khỏi đường dẫn cơ sở (thường chỉ là một / nhưng để duy trì chức năng phù hợp của Drupal khỏi thư mục con của miền không được mã hóa cứng). Trên page.html.twig
hoặc trong bất kỳ mẫu nào có bộ tiền xử lý ở trên, điều này sẽ hoạt động cho mục đích đó:
<img src="{{ base_path ~ directory }}/images/nsf1.svg"
alt="National Science Foundation logo" height="80" width="80" />
Và tất nhiên, câu trả lời của Shawn Conn hoạt động tốt nếu bạn có thể ngăn chặn mong muốn của mình đối với các mẫu đẹp, nhưng tôi không thể.