Comment obtenir l'URL du nœud dans un modèle Twig?

22

J'essaie d'obtenir l'URL du nœud dans un modèle Twig. {{ content.node_link }}renvoie le lien complet, mais je n'ai besoin que de l'URL.

Comment récupérer l'URL du nœud?

inalto
la source
4
Si vous regardez dans le modèle de nœud, vous verrez que urlc'est une variable disponible. Ainsi, une simple impression, {{ url }}par exemple, rendra l'URL brute, /node/[nid]c'est-à - dire /node/30sans aucun balisage enveloppant. C'est ce que vous cherchez à faire?
Danny Englander

Réponses:

30

Selon les fonctions - Dans les modèles Twig, vous pouvez utiliser est simple en

 {{ path('entity.node.canonical', {'node': node.id}) }}
Yusef
la source
3
Cette solution fonctionne et est assez groovy. Mais l'utilisation de {{url}} dans un node--modèle de brindille basé vous donnera le même résultat.
Eric Steinborn
11

Dans un node.html.twig, vous pouvez utiliser directement {{ url }}

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

Pour plus d'informations, lisez le commentaire dans le modèle de base /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
la source
Vous devriez expliquer votre réponse davantage que "simplement mettre". Une explication, telle que @Danny Englander a écrit dans le commentaire de la question, aide le demandeur et les autres à en savoir plus sur la façon dont vous avez trouvé votre réponse et comment ils peuvent s'aider eux-mêmes à l'avenir.
mradcliffe
C'est la méthode la plus simple, en utilisant une variable intégrée dans le modèle de brindille de nœud.
Eric Steinborn
Cela devrait être la réponse acceptée
Capsule
7

J'ai trouvé cette solution qui fonctionne, mais qui est assez compliquée.

{{ path('entity.node.canonical', {'node': content['#node'].id()  }) }}
inalto
la source
4
Vous pouvez utiliser node.idau lieu decontent['#node'].id()
4k4
2
Je travaille en vue avec un modèle de suite d'affichage et «nœud» n'est pas l'une des clés disponibles. {{dump (_context | keys)}} donne uniquement ces clés: 'content', 'theme_hook_original', 'attributes', 'title_attributes', 'content_attributes', 'title_prefix', 'title_suffix', 'db_is_active', 'is_admin' , 'logs_in', 'utilisateur', 'répertoire', 'paramètres', 'disposition', '#cache', 'theme_hook_suggestions'
inalto
Excellente solution pour les modèles de suite d'affichage. @ 4k4 content['#node'].id()est correct pour le contexte DS.
masterchief