it-swarm.com.de

Knotenalias in Vorlage abrufen

Ich erstelle ein about-us mit dem Inhaltstyp "Basisseite" und mit dem Alias ​​"Pfad" auf \about-us (Nid = 2) In der Vorlagendatei möchte ich einen Pfadalias erhalten

<li><a href="{{  ??????? }}">{{ 'About Us'|t }}</a></li>

in Drupal 7 Ich habe es mit url("node/2") bekommen, aber was ist äquivalent in Drupal 8? welches Snippet muss ich verwenden) um den Pfadalias von nid 2 in der Vorlagendatei zu erhalten?

3
Yusef

Zusammenfassend wenn Sie Relative URL generieren möchten verwenden Sie path und wenn Sie Absolute URL generieren möchten verwenden url Die Lösung für diese Frage ist also die relative URL

 path('entity.node.canonical', {'node': node.nid}) 

und für absolute URL

 url('entity.node.canonical', {'node': node.nid}) 

Außerdem habe ich einige Details zu den Funktionen path, url und link angegeben, um anderen Leuten zu helfen, diese Frage zu erhalten (wie ich meine nach 1 Jahr erhalten habe).

uRL ($ Name, $ Parameter, $ Optionen)

Generieren Sie eine absolute URL mit einem Routennamen und Parametern:

<a href="{{ url('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>

Generieren Sie eine absolute URL zur aktuellen URL:

<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>

Generieren Sie eine absolute URL zur Startseite:

<a href="{{ url('<front>') }}">{{ 'Home'|t }}</a>

pfad ($ Name, $ Parameter, $ Optionen)

Erzeugt einen [relativen] URL-Pfad mit einem Routennamen und Parametern.

{# Link to frontpage view. #}
<a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>

{# Link to user entity/profile page. #}
<a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a>

{# Link to node page. #}
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>

Die URL- und Pfadfunktion werden eng parallel zu denen in\Symfony\Bridge\Twig\Extension\RoutingExtension definiert.

link ($ Text, $ URL, $ Attribute)

Diese Hilfsfunktion akzeptiert als ersten Parameter den Text und als zweiten Parameter die URL

Beispiele:

{{ link(item.title, item.url, { 'class':['foo', 'bar', 'baz']} ) }}

file_url ($ uri)

Diese Hilfsfunktion akzeptiert einen relativen Pfad vom Stammverzeichnis und erstellt einen relativen URI-Pfad zur Datei.

{{ file_url(node.field_example_image.entity.uri.value) }}
6
Yusef

Sie können path('entity.node.canonical', {'node': dd.nid}) in der Vorlagendatei verwenden.

Das Markup in der Vorlagendatei würde so aussehen.

<li><a href="{{path('entity.node.canonical', {'node': dd.nid})}}">{{ 'About Us'|t }}</a></li>

Ich habe es nicht versucht, aber es sollte funktionieren.

14
Nitesh Sethia

Ich mag es nicht, Knoten-IDs in Vorlagen zu kleben (es fordert nur einen Benutzer auf, den Knoten zu entfernen und die Seite mit einer neuen Knoten-ID neu zu erstellen).

Ich habe das getan und es scheint in Ordnung zu sein:

<a href="{{ path('<front>') ~ 'some/path/here' }}">My Link</a>

Beachten Sie, dass der von zurückgegebene Pfad standardmäßig/lautet, sodass Sie keinen führenden Schrägstrich im angehängten Text möchten.

Jemand, der erfahrener ist als ich, kann sich möglicherweise einschalten, wenn es eine schlechte Idee ist, Front als Basispfad zu verwenden.

BEARBEITEN: Natürlich ist mir bewusst, dass dieser Ansatz auch Probleme hat (was ist, wenn ein Benutzer den Alias ​​für die Seite ändert und die Links in der Vorlage unterbricht?). Benutzer haben jedoch eine viel einfachere Kontrolle über Aliase als Knoten-IDs. Wenn Sie einen Knoten löschen, kann ein Sterblicher keinen neuen Knoten mit derselben ID erstellen. Wenn Sie einen Alias ​​durcheinander bringen, kann der normale Benutzer (Inhaltseditor) ihn wieder wiederherstellen, ohne einen Entwickler anrufen zu müssen.

0
Daniel Scott