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?


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

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

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.