Wie erhalte ich die Knoten-URL in einer Twig-Vorlage?

22

Ich versuche, die Knoten-URL in einer Twig-Vorlage abzurufen. {{ content.node_link }}Gibt den vollständigen Link zurück, ich benötige jedoch nur die URL.

Wie rufe ich die Knoten-URL ab?

inalto
quelle
4
Wenn Sie sich die Knotenvorlage ansehen, sehen Sie, dass urles sich um eine verfügbare Variable handelt. So wird beispielsweise durch einfaches Drucken {{ url }}die rohe URL gerendert, /node/[nid]dh /node/30ohne Umbruchmarkierung. Ist es das, wonach Sie suchen?
Danny Englander

Antworten:

30

Entsprechend den Funktionen - In Twig Templates können Sie dies ganz einfach tun

 {{ path('entity.node.canonical', {'node': node.id}) }}
Yusef
quelle
3
Diese Lösung funktioniert und ist ziemlich fetzig. Die Verwendung von {{url}} in einer node--basierten Zweigvorlage führt jedoch zum gleichen Ergebnis.
Eric Steinborn
11

In einer node.html.twig können Sie direkt verwenden {{ url }}

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

Weitere Informationen finden Sie im Kommentar in der Kernvorlage /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
quelle
Sie sollten Ihre Antwort eher erklären als "einfach ausgedrückt". Eine Erklärung, wie etwa das, was @Danny Englander in dem Fragenkommentar geschrieben hat, hilft dem Fragesteller und anderen, mehr darüber zu erfahren, wie Sie auf Ihre Antwort gekommen sind und wie sie sich in Zukunft selbst helfen können.
Mradcliffe
Dies ist die einfachste Methode, bei der eine in die Node Twig-Vorlage integrierte Variable verwendet wird.
Eric Steinborn
Das sollte die akzeptierte Antwort sein
Kapsel
7

Ich habe diese Lösung gefunden, die funktioniert, aber ziemlich kompliziert ist.

{{ path('entity.node.canonical', {'node': content['#node'].id()  }) }}
inalto
quelle
4
Sie können node.idanstelle voncontent['#node'].id()
4k4
2
Ich arbeite in View mit einer Display Suite-Vorlage und 'node' ist keiner der verfügbaren Schlüssel. {{dump (_context | keys)}} gibt nur diese Schlüssel aus: 'content', 'theme_hook_original', 'attributes', 'title_attributes', 'content_attributes', 'title_prefix', 'title_suffix', 'db_is_active', 'is_admin' , 'eingeloggt', 'Benutzer', 'Verzeichnis', 'Einstellungen', 'Layout', '#Cache', 'Theme_Hook_Suggestions'
inalto
Tolle Lösung für Display Suite-Vorlagen. @ 4k4 content['#node'].id()ist für den DS-Kontext korrekt.
Masterchief