Score:0

เข้าถึงเอนทิตี (ไม่เกี่ยวข้องกัน) จากภายใน twig โดยไม่ต้องประมวลผลล่วงหน้า

ธง in

ภายในโหนด Twig template ฉันสามารถเข้าถึงได้เช่น ช่องอ้างอิงกับ...

{{ node.field_my_entity_reference.0.entity.field_my_field.0.value }}

ด้วยความช่วยเหลือของ ทวิก ทวิค ฉันสามารถแสดงฟิลด์จากโหนดเฉพาะโดยอ้างอิง NID ของพวกเขา (ที่นี่ NID 1)...

{{ drupal_field('field_my_field', 'node', 1) }}

ตอนนี้เป็นไปได้ไหมที่จะเข้าถึงฟิลด์ของโหนดเฉพาะโดยตรงด้วย NID ของพวกเขา ไม่ใช่แค่รับเนื้อหาที่เรนเดอร์ ไม่ว่าจะด้วยวิธีที่ Drupal เตรียมไว้ให้หรือด้วยความช่วยเหลือของโมดูลอย่าง Twig Tweak ฉันรู้ว่าสิ่งนี้เป็นไปได้ผ่านการประมวลผลล่วงหน้า แต่ฉันกำลังค้นหาวิธีดำเนินการโดยตรงใน Twig

Score:1
ธง ve

Drupal twig ป้องกันไม่ให้คุณใช้งานบางฟังก์ชัน แต่คุณสามารถเพิ่มฟังก์ชันที่กำหนดเองได้ผ่านส่วนขยาย twig ที่กำหนดเองได้ สมมติว่า get_any_node_field_value

ในกิ่งไม้:

<div>
  {{get_any_node_field_value(nodeId, 'field_my_custom_name')}}
</div>

บทความนี้ ดูเหมือนจะให้คำแนะนำที่ดีในการตั้งค่าส่วนขยายกิ่งแบบกำหนดเอง โดยสังเขป:

เว็บ/โมดูล/กำหนดเอง/your_module/src/Extension/TwigExtension.php:

<?php

เนมสเปซ Drupal\your_module\Extension;

ใช้ Twig\Extension\AbstractExtension;
ใช้ Twig\TwigFunction;

คลาส TwigExtension ขยาย AbstractExtension {

  ฟังก์ชั่นสาธารณะ getFunctions (): อาร์เรย์ {
    กลับ [
      ใหม่ TwigFunction('get_any_node_field_value', [$this, 'get_any_node_field_value']),
    ];


    ฟังก์ชันสาธารณะ get_any_node_field_value ($nodeId, $fieldName) {
      // ตรรกะของคุณอยู่ที่นี่  
    }

}

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

ru flag
การเดิมพัน 10 เหรียญนี้ **จะ** ตกลงบนเท้าของคุณในภายหลัง :-)
ve flag
ขึ้นอยู่กับกรณีการใช้งานที่ฉันพูด - แต่ฉันเห็นด้วย: แน่นอนมีศักยภาพที่จะทำเช่นนั้น ;-)
4uk4 avatar
cn flag
ไม่มีปัญหาในการเขียนฟังก์ชัน Twig ด้วยข้อมูลเมตาแคชหรือไฟล์แนบ เพียงแค่ฟองพวกเขาขึ้น เนื้อหาที่ซ้อนกันทั้งหมดจะเหมือนกัน ไม่ว่าจะอยู่ในฟังก์ชัน Twig หรือไม่ก็ตาม ทั้งหมดนี้ทำงานในบริบทการเรนเดอร์เดียวกัน

โพสต์คำตอบ

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