У page.html.twig
вас буде робоча {{ base_path }}
змінна. Чому він доступний не в кожному шаблоні, я поняття не маю. Як я думаю, це має бути, і все інше виглядає безладним, моє найкраще рішення - це робити саме так, як робить Drupal у функції попередньої обробки сторінки для будь-якого місця, яке мені потрібно.
Щоб зробити {{ base_path }}
доступним для блокування шаблонів у темі, названій на прикладі, додайте цей код у example.theme
файл:
/**
* Implements hook_preprocess_block().
*/
function example_preprocess_block(&$variables) {
$variables['base_path'] = base_path();
}
Як зазначається у прийнятій відповіді, наданій MPD, якщо ви отримуєте URL-адресу вузла чи іншої сутності, існують способи зробити це все за вас.
Однак існують причини отримання базового шляху, наприклад, під час відображення зображень, які перебувають у вашій темі папки. {{ directory }}
надає шлях до папки з темами, але він залишає основний шлях (як правило, лише a /, але щоб зберегти належне функціонування Drupal з підкаталогу домену, який не повинен бути жорстко закодований). Для page.html.twig
або у будь-якому шаблоні, що містить вищепереробник, це буде працювати для цієї мети:
<img src="{{ base_path ~ directory }}/images/nsf1.svg"
alt="National Science Foundation logo" height="80" width="80" />
І звичайно, відповідь Шона Конна працює чудово, якщо ви можете придушити своє бажання досить шаблонів, але я не зміг.