Я хочу использовать базовый путь в файле шаблона Drupal 8. Я попробовал следующее, но я не получил правильный результат.
{{ app.request.baseUrl }}
{{base_path}}
Что мне нужно, это абсолютный путь к узлу {{ app.request.baseUrl }}/{{ url }}
.
Одно из решений, которое я нашел, - поместить этот код в обработчик препроцесса и передать его теме.
$host = \Drupal::request()->getHost();
$response = \Drupal::httpClient()
Я ищу лучшее решение. Что я должен использовать вместо того, который я использую?
path()
функция может быть применена для получения маршрута узла:{{ path('entity.node.canonical', {'node': node.id}) }}
Вам почти никогда не нужно явно создавать пути из частей в Drupal 8. Я хотел бы пойти примерно так:
источник
toString
отметив шоу, затем я попробовал kint (url) и увидел, что это объект.У
page.html.twig
вас будет рабочая{{ base_path }}
переменная. Почему это не доступно в каждом шаблоне, я понятия не имею. Как мне кажется, и все остальное выглядит неопрятно, я предпочитаю делать то же, что и Drupal, в функции страницы предварительной обработки для любого места, где оно мне нужно.Чтобы сделать
{{ base_path }}
доступными блокировку шаблонов в теме с именем example, добавьте этот код вexample.theme
файл:Как отмечено в принятом ответе, предоставленном MPD, если вы получаете URL узла или другого объекта, есть способы сделать все это за вас.
Однако есть причины для получения base_path, например, при отображении изображений, которые находятся в папке вашей темы.
{{ directory }}
предоставляет путь к папке темы, но он не учитывает базовый путь (обычно это просто /, но для того, чтобы сохранить правильное функционирование Drupal из подкаталога домена, который не должен быть жестко закодирован). Наpage.html.twig
любом шаблоне, в котором есть вышеуказанный препроцессор, это будет работать для этой цели:И, конечно, ответ Шона Конна работает хорошо, если вы можете подавить свое желание красивых шаблонов, но я не смог.
источник
И согласно документацией странице 8.2.x , две глобальные переменные добавлены для возврата на главную страницу и в URL базового пути:
Таким образом, вы можете получить шрифт страницы URL с помощью
front_page
базы URL с помощьюbase_url
Заметка
При получении URL-адреса главной страницы
{{ url('<front>') }}
возникает проблема, если вы хотите связать его с другим путем, напримервозвращение
это означает, что по умолчанию это не текст, а возвращаемый массив
источник
В
& в файле шаблона вы можете позвонить через
источник
Пока что эта тема не приносит правильного решения. Мы можем объединить его с помощью render_val ()
Вот способ, которым я использовал его, чтобы получить абсолютный путь к изображению сущности:
Сначала мы получаем базовый URL сайта. Тогда нам нужно удалить лишнюю /. Затем мы объединяем наш базовый путь с нашим относительным путем изображения.
источник
Все вышеперечисленное не удалось для меня, потому что у меня настроены языковые пути, поэтому URL моей главной страницы выглядит так
https://example.com/en
.В итоге я использовал этот код, чтобы получить фактический базовый URL для моего сайта:
источник
Я знаю, что вы уже отметили это как правильное, но это можно использовать как элемент ветки в файле шаблона без дополнительной работы. Я нашел это в блоке - system-branding-block.html.twig из темы Classy. Так что вы можете использовать это так:
источник