Bagaimana cara mendapatkan URL simpul di templat Ranting?

22

Saya mencoba untuk mendapatkan URL simpul dalam templat ranting. {{ content.node_link }}mengembalikan tautan lengkap, tetapi saya hanya perlu URL.

Bagaimana cara mengambil URL simpul?

juga
sumber
4
Jika Anda melihat di templat simpul, Anda akan melihat bahwa itu urladalah variabel yang tersedia. Jadi hanya dengan mencetak {{ url }}misalnya akan membuat URL mentah, /node/[nid]yaitu /node/30tanpa markup pembungkus. Itukah yang ingin Anda lakukan?
Danny Englander

Jawaban:

30

Menurut Fungsi - Di Ranting Template yang dapat Anda gunakan adalah sederhana dengan

 {{ path('entity.node.canonical', {'node': node.id}) }}
Yusef
sumber
3
Solusi ini berfungsi, dan cukup asyik. Tetapi menggunakan {{url}} dalam node--templat ranting berbasis akan memberi Anda hasil yang sama.
Eric Steinborn
11

Di node.html.twig Anda bisa langsung menggunakan {{ url }}

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

Untuk informasi lebih lanjut baca komentar di templat inti /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
sumber
Anda harus menjelaskan jawaban Anda lebih daripada "sederhananya". Penjelasan, seperti apa yang ditulis oleh @Danny Englander dalam komentar pertanyaan, membantu penanya dan orang lain untuk mempelajari lebih lanjut tentang bagaimana Anda mendapatkan jawaban Anda dan bagaimana mereka dapat membantu diri mereka sendiri di masa depan.
mradcliffe
Ini adalah metode termudah, menggunakan variabel bawaan dalam templat ranting simpul.
Eric Steinborn
Itu seharusnya jawaban yang diterima
Kapsul
7

Saya telah menemukan solusi ini yang berfungsi, tetapi cukup berbelit-belit.

{{ path('entity.node.canonical', {'node': content['#node'].id()  }) }}
juga
sumber
4
Anda dapat menggunakan node.idsebagai ganticontent['#node'].id()
4k4
2
Saya sedang bekerja dalam tampilan dengan template tampilan suite dan 'node' bukan salah satu kunci yang tersedia. {{dump (_context | keys)}} hanya memberikan kunci-kunci ini: 'konten', 'theme_hook_original', 'atribut', 'title_attributes', 'content_prefix', 'title_prefix', 'title_suffix', 'db_is_active', 'is_admin' , 'login_in', 'pengguna', 'direktori', 'pengaturan', 'tata letak', '#cache', 'theme_hook_suggestions'
inalto
Solusi hebat untuk templat tampilan suite. @ 4k4 content['#node'].id()benar untuk konteks DS.
masterchief