¿Cómo obtengo la URL del nodo en una plantilla Twig?

22

Estoy tratando de obtener la URL del nodo en una plantilla Twig. {{ content.node_link }}devuelve el enlace completo, pero solo necesito la URL.

¿Cómo recupero la URL del nodo?

inalto
fuente
44
Si observa la plantilla de nodo, verá que urles una variable disponible. Por lo tanto, simplemente imprimir, {{ url }}por ejemplo, generará la URL sin procesar, /node/[nid]es decir , /node/30sin ningún marcado de ajuste. ¿Es eso lo que estás buscando hacer?
Danny Englander

Respuestas:

30

De acuerdo con las funciones: en Twig Templates puede usar es simple

 {{ path('entity.node.canonical', {'node': node.id}) }}
Yusef
fuente
3
Esta solución funciona y es bastante maravillosa. Pero usar {{url}} en una node--plantilla de ramita basada le dará el mismo resultado.
Eric Steinborn
11

En un nodo.html.twig puedes usar directamente {{ url }}

<a href="{{ url }}">read more</a>

Para obtener más información, lea el comentario en la plantilla principal /core/modules/node/templates/node.html.twig:

{#
/**
 * @file
 * Default theme implementation to display a node.
 *
 * Available variables:
 * - node: The node entity with limited access to object properties and methods.
 * ...
 * - url: Direct URL of the current node.
 * ...
#}
...

<article{{ attributes }}>

  {{ title_prefix }}
  {% if not page %}
    <h2{{ title_attributes }}>
      <a href="{{ url }}" rel="bookmark">{{ label }}</a>
    </h2>
  {% endif %}
  {{ title_suffix }}
toto21
fuente
Debería explicar su respuesta más que "simplemente poner". Una explicación, como lo que escribió @Danny Englander en el comentario de la pregunta, ayuda al autor de la pregunta y a otros a aprender más sobre cómo se les ocurrió su respuesta y cómo pueden ayudarse a sí mismos en el futuro.
mradcliffe
Este es el método más fácil, utilizando una variable integrada en la plantilla de ramita de nodo.
Eric Steinborn
Esa debería ser la respuesta aceptada
Capsule
7

He encontrado esta solución que funciona, pero es bastante complicada.

{{ path('entity.node.canonical', {'node': content['#node'].id()  }) }}
inalto
fuente
44
Puede usar en node.idlugar decontent['#node'].id()
4k4
2
Estoy trabajando a la vista con una plantilla de conjunto de visualización y 'nodo' no es una de las teclas disponibles. {{dump (_context | keys)}} solo da estas claves: 'content', 'theme_hook_original', 'atributos', 'title_attributes', 'content_attributes', 'title_prefix', 'title_suffix', 'db_is_active', 'is_admin' , 'login_in', 'user', 'directory', 'settings', 'layout', '#cache', 'theme_hook_suggestions'
inalto
Gran solución para plantillas de conjunto de visualización. @ 4k4 content['#node'].id()es correcto para el contexto DS.
masterchief