Solución:
Su PHP de su última edición se traduciría en una ramita como esta:
{{ node.field_my_link.0.url }}
Esto funciona así, 0
devuelve el primer elemento de la lista de elementos de campo, url
obtiene el objeto url y debido a que twig lanzará este objeto como una cadena, llamará al método mágico toString () y generará la url como un valor de cadena.
Solo necesitas usar url
, porque twig busca automáticamente el método getxyz()
si no hay propiedad con ese nombre xyz
.
Puede acceder al elemento de matriz de renderizado directamente, en su caso:
{{ node.field_my_link[0]['#url'] }}
Tienes que cubrir ambos casos: URL externas e internas.
Primero, verifiquemos si la URL es externo y simplemente imprime su *.uri
.
De lo contrario, si es interno tenemos que cablear su nombre de ruta y parámetros a través de Drupal path($name, $parameters, $options)
función.
{% if node.field_link.0.url.external %}
<a href="https://foroayuda.es/{{ node.field_link.uri }}">
{{ node.field_link.title }}
</a>
{% else %}
<a href="{{ path(node.field_link.0.url.routeName, node.field_link.0.url.routeParameters) }}">
{{ node.field_link.title }}
</a>
{% endif %}