Score:1

การเข้าถึงค่าโหนดในเทมเพลต twig ของย่อหน้า

ธง es

ฉันกำลังเขียนเทมเพลตกิ่งไม้สำหรับย่อหน้า ฉันต้องการเข้าถึงค่าฟิลด์ข้อความจากหน้า/โหนดที่จะเพิ่มย่อหน้าประเภทนี้

โดยเฉพาะอย่างยิ่ง ฉันต้องการเข้าถึงค่าของฟิลด์ข้อความที่ชื่อว่า 'field_runner_id' ฉันเข้าถึงค่านี้ในเทมเพลตทวิกเพจ/โหนดของฉันดังนี้:

content.field_runner_id|field_value

ฉันได้ลองใช้เทคนิคจำนวนหนึ่ง (ตามรายการด้านล่าง) เพื่อเข้าถึงค่าฟิลด์นั้นภายในเทมเพลตย่อหน้าของฉัน แต่ไม่ประสบความสำเร็จ

ฉันจะอ้างถึงค่าเขตข้อมูลของเพจหลักภายในเทมเพลตย่อหน้าได้อย่างไร

ฉันพบโพสต์และบทความบางส่วนที่แก้ไขปัญหานี้ และสามารถรับรายละเอียดเกี่ยวกับโหนดพาเรนต์ได้ เช่น ชื่อเรื่องและฟิลด์ nid แต่ไม่ใช่ฟิลด์ที่มีอยู่

เช่น โพสต์นี้: https://mark.ie/blog/printing-values-of-a-parent-node-from-a-drupal-paragraphs-field ...ช่วยให้ฉันได้รับหน้าหลักและ nid โดยการเพิ่มสิ่งนี้ในเทมเพลตย่อหน้าของฉัน:

{% ตั้งค่าพาเรนต์ = ย่อหน้า._referringItem.parent.parent.entity %}
{{ parent.title.value }}
{{ parent.nid.value }}

ฉันได้ลองทำสิ่งเหล่านี้แล้ว โดยไม่ประสบความสำเร็จ:

{{ parent.content.field_runner_id.value }}
{{ parent.content.field_runner_id[0] }}
{{ parent.content.field_runner_id|field_value }}
Score:4
ธง ru

คำนำ: อย่าใช้วิธีนั้นจากบล็อกนั้น มีวิธีที่ดีกว่า

  1. บางสิ่งบางอย่าง._referringItem ไม่ปลอดภัยสำหรับแคช ดังนั้นอย่าใช้สิ่งนี้ในเทมเพลต Twig
  2. บางสิ่งบางอย่าง._referringItem ไม่ทำการตรวจสอบการเข้าถึงใดๆ
  3. วรรค._referringItem.parent.parent.entity อาจเป็นทางเลือกที่ยาวที่สุดและสับสนที่สุดในการเขียน ย่อหน้า parentEntity

ดังนั้นตอนนี้คำตอบที่แท้จริง :-)

ย่อหน้า parentEntity กำลังส่งคืนวัตถุเอนทิตีหลักแบบดิบ (คล้ายกับไฟล์ ย่อหน้า ตัวแปร) แต่ไม่รวมอาร์เรย์เรนเดอร์เช่น เนื้อหา. ดังนั้นคุณไม่จำเป็นต้อง .เนื้อหา คุณไม่จำเป็นต้อง |field_value.

ให้มุ่งตรงไปที่ค่าฟิลด์ parent.field_on_hostnode.0.value


ข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรในเทมเพลตเอนทิตี:

เนื้อหา = อาร์เรย์เรนเดอร์ที่สมบูรณ์ของเอนทิตี

content.field_something = แสดงอาร์เรย์ของฟิลด์เดียว

content.field_something|field_value = รับค่าฟิลด์ดิบกลับจากอาร์เรย์เรนเดอร์ (ต้องใช้โมดูล "ค่าฟิลด์ทวิก")

เอนทิตี = วัตถุเอนทิตีดิบ (แทนที่เอนทิตีด้วย โหนด ในเทมเพลตโหนด ย่อหน้า ในเทมเพลตย่อหน้า เป็นต้น)

entity.field_something.value = ไม่แนะนำ จะทำงานแตกต่างกันไปตามประเภทฟิลด์และจำนวนสมาชิกของฟิลด์

entity.field_something.getValue() = รับอาร์เรย์ของค่าฟิลด์ดิบ ใช้ได้กับฟิลด์ทุกประเภทและคาร์ดินาลิตี้ฟิลด์ทั้งหมด

entity.field_something.0.value = รับค่าฟิลด์ข้อมูลดิบค่าแรก (สำหรับฟิลด์ข้อความธรรมดา ตัวเลข อีเมล ฟิลด์โทรศัพท์ จะไม่ทำงานกับลิงก์ รูปภาพ การอ้างอิงเอนทิตี...)

เอนทิตี.field_something.0.name_of_database_column = รับค่าย่อยของข้อมูลดิบค่าแรก name_of_database_column ของ field_something (นี่อาจเป็น รูปแบบ ในช่องข้อความที่จัดรูปแบบ end_value ในฟิลด์ช่วงวันที่ target_id ในฟิลด์อ้างอิงเอนทิตี...)

ช่องอ้างอิงเอนทิตีเท่านั้น:

โปรดทราบว่าวิธีการต่อไปนี้ไม่ปลอดภัยสำหรับแคช ไม่ใช้ภาษา และไม่ดำเนินการตรวจสอบการเข้าถึง

เอนทิตี.field_reference.0.target_id = รับรหัสตัวเลขของเอนทิตีย่อยที่อ้างอิงตัวแรก

เอนทิตี.field_reference.0.entity = อ็อบเจกต์เอนทิตีลูกตัวแรกที่อ้างอิง (ไม่มีอาร์เรย์เรนเดอร์!)

entity.field_reference.0.entity.getTranslation('de') = รับการแปลภาษาเยอรมันของวัตถุลูกคนแรก

ย่อหน้าเท่านั้น:

ย่อหน้า parentEntity = วัตถุเอนทิตีหลักโดยตรง (ไม่มีอาร์เรย์เรนเดอร์!)

Kevin avatar
in flag
ที่สำคัญเมื่อข้ามการเรนเดอร์ คุณอาจสูญเสียการตรวจสอบการเข้าถึง
ru flag
คำใบ้ที่ดี ฉันเพิ่มสิ่งนี้ในคำตอบ AFAIK เช่นเดียวกับ `field_foo.0.entity` ใดๆ
scaffolding avatar
es flag
สิ่งนี้มีประโยชน์จริงๆ ขอบคุณ @Hudri
Score:3
ธง ve

ฉันคิดว่ามันง่ายกว่าที่คุณคิด:


{% ตั้ง parentNode = ย่อหน้า.parentEntity %}
<!-- parentNode เป็นโหนดวัตถุอยู่แล้ว ดังนั้นตอนนี้คุณสามารถเข้าถึงฟิลด์ใดก็ได้โดยตรงโดยไม่ต้องผ่านวัตถุเนื้อหา --->

{{ parentNode.field_runner_id.value }}

สิ่งที่จะทำให้ชีวิตของคุณง่ายขึ้นโดยทั่วไปคือการติดตั้ง พัฒนา และ devel_kint_extras โมดูลสำหรับการพัฒนา

จากนั้น คุณสามารถสำรวจโครงสร้างวัตถุ drupal ที่ซับซ้อนเช่นนี้ และค้นหาค่าฟิลด์ที่เหมาะสม:

{{kint(parentNode)}}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา