¿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?


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}) }}

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 }}

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()  }) }}

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.