ฉันจะรับโหนด URL ในเทมเพลต Twig ได้อย่างไร


22

ฉันพยายามรับ URL โหนดในเทมเพลต Twig {{ content.node_link }}ส่งคืนลิงก์แบบเต็ม แต่ฉันต้องการ URL เท่านั้น

ฉันจะดึง URL โหนดได้อย่างไร


4
หากคุณดูในเท็มเพลตโหนดคุณจะเห็นว่าurlเป็นตัวแปรที่มีอยู่ ดังนั้นเพียงแค่พิมพ์{{ url }}ตัวอย่างเช่นจะทำให้ URL ที่ดิบ/node/[nid]เช่น/node/30โดยไม่ต้องมาร์กอัปห่อใด ๆ นั่นคือสิ่งที่คุณต้องการทำใช่ไหม
Danny Englander

คำตอบ:


30

ตามฟังก์ชั่น - ในเทมเพลตทวิกที่คุณสามารถใช้ง่ายโดย

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

3
วิธีนี้ใช้ได้ผลและค่อนข้างแรง แต่การใช้ {{url}} ในnode--แม่แบบกิ่งไม้ที่ใช้จะให้ผลเหมือนกัน
Eric Steinborn

11

ใน node.html.twig คุณสามารถใช้งานได้โดยตรง {{ url }}

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

สำหรับข้อมูลเพิ่มเติมอ่านความคิดเห็นในแม่แบบหลัก/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 }}

คุณควรอธิบายคำตอบของคุณมากกว่า "ใส่" คำอธิบายเช่นสิ่งที่ @Danny Englander เขียนไว้ในความคิดเห็นคำถามช่วยให้ผู้ถามและคนอื่น ๆ เรียนรู้เพิ่มเติมเกี่ยวกับวิธีที่คุณคิดคำตอบและวิธีที่พวกเขาสามารถช่วยเหลือตัวเองได้ในอนาคต
mradcliffe

นี่เป็นวิธีที่ง่ายที่สุดโดยใช้ตัวแปรบิวด์อินในเท็มเพลตกิ่งโหนด
Eric Steinborn

นั่นควรเป็นคำตอบที่ได้รับการยอมรับ
Capsule

7

ฉันได้พบวิธีแก้ปัญหาที่ใช้งานได้ แต่ค่อนข้างซับซ้อน

{{ path('entity.node.canonical', {'node': content['#node'].id()  }) }}

4
คุณสามารถใช้node.idแทนcontent['#node'].id()
4k4

2
ฉันกำลังทำงานโดยใช้เทมเพลตชุดการแสดงผลและ 'โหนด' ไม่ใช่หนึ่งในคีย์ที่มีอยู่ {{dump (_context | keys)}} ให้คีย์เหล่านี้เท่านั้น: 'เนื้อหา', 'theme_hook_original', 'attribute', 'title_attributes', 'content_attributes', 'title_prefix', 'title_suffix', 'db_is_active', 'is_admin' , 'log_in', 'user', 'directory', 'settings', 'layout', '#cache', 'theme_hook_suggestions'
inalto

ทางออกที่ดีสำหรับเทมเพลตชุดการแสดงผล @ 4k4 content['#node'].id()ถูกต้องสำหรับบริบท DS
masterchief
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.