хехе, это дерьмо с точки зрения получения URL из поля (Twig версия получить этот URL)
Если вы хотите URL (и название), который в поле вы должны получить на объект класса: Drupal \ ядро \ Url
Если у вас есть узел, drupal_entity (Twig Tweaks), то у вас есть: (я буду использовать «закладку», как этот узел) . Вкладка [ '# узел'] field_link
Это дает вам с помощью:
вкладку [ '# узла'] field_link..URI -> Ури (URI не URL)
Вкладка [ '# узел'] field_link.title. -> название
, но это не конец.
это лучше Асесс Drupal \ ссылки \ Plugin \ Поле \ FieldType \ LinkItem по:.
вкладки [ '# узла'] field_link.get (0)
Вкладка [ '#node'] field_link [0]
(оба делают то же самое)
, то вы можете получить доступ к что самое интересное:.
Вкладка [ '# узел']. Field_tab_link [0] .getUrl() с Drupal \ Core, \ Url объект.
Вы можете получить доступ к этому объекту также с помощью этой линии снизу, в том, что это шаблон узла файла: content.field_link [0] [ «# URL»] (это также Drupal \ Ядро \ Url объект)
Этот объект имеет методы:
- isExternal() -> ссылка на внешней стороне (т.е. http://cnn.com.)
- isRouted() -> ссылка на внутренней части вашего сайта
- getRouteName() -> Название маршрута
- getRouteParameters() -> который дает массив значений, здесь (мы получаем идентификатор этого узла) вы бы [ «узел» => ID]
вы должны использовать его так:
{% set tabURL = tab['#node'].field_link[0].getUrl() %}
{% if tabURL.isExternal() %}
{% set link_path = tab['#node'].field_tab_link.uri %}
{% elseif tabURL.isRouted() %}
{% set link_path = path(tabURL.getRouteName(), tabURL.getRouteParameters()) %} {# /node/12 #}
{% endif %}
это сделало это для меня. спасибо за фрагмент! если псевдоним определен, я получаю псевдоним, если не получаю ссылку с .../node/id. – Nicensin
Не могли бы вы объяснить, как его использовать? Где я изменил/добавил код? В теме> препроцесс? Url.php или Core? Трудно найти глобальный ответ, когда мы запустим Drupal .. –
@PaulLeclerc Вы никогда не должны менять что-то в ядре так же, как общее примечание. Вы можете использовать приведенные выше примеры кода там, где вам это нужно. Он работает в каждом файле, где вы можете использовать php. Мы, очевидно, не можем ответить на это за вас, потому что мы не знаем, что вы хотите делать. – Nicensin