Score:0

Hook สำหรับฟิลด์ไม่ถูกเรียกใช้เมื่อใช้เดลต้าในเทมเพลต

ธง ie

ฉันพยายามเชื่อมต่อฟิลด์ประเภทลิงก์ด้วยชื่อเครื่อง "field_link" ฟิลด์นี้แสดงผลในเทมเพลตโดยใช้ดัชนีเดลต้าเพื่อแยกค่าบางอย่าง เช่น:

{{ content.field_link[0]['#title'] }}

ฉันสังเกตเห็นว่าเมื่อฉันใช้ เนื้อหา.field_link[0] หรือ content.field_link.0 ตะขอของฉัน HOOK_preprocess_field__field_link(&$vars, $hook) ไม่ถูกกระตุ้น แต่ทันทีที่ฉันใช้ content.field_link ตะขอทำงาน

มีวิธีแก้ปัญหาหรือการใช้เดลต้าเพื่อแยกค่าของฟิลด์บางฟิลด์ไม่ใช่แนวปฏิบัติที่ดีที่สุดหรือไม่

ขอบคุณ

Kevin avatar
in flag
นี่คืออาร์เรย์เรนเดอร์ ตัวอย่างแรกพิมพ์ค่าในขณะที่ตัวอย่างที่สองเรียกใช้ฟังก์ชันการเรนเดอร์เพื่อสร้างเอาต์พุต นั่นคือเหตุผล หากคุณต้องการสิ่งอื่นที่ไม่ใช่ค่าเริ่มต้น คุณควรเลือกใช้ตัวจัดรูปแบบฟิลด์หรือประมวลผลตัวแปรใหม่ล่วงหน้าสำหรับเทมเพลต
Score:1
ธง in

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

นอกจากนี้ ฉันไม่แนะนำให้แยกและแสดงผลข้อมูลด้วยวิธีนี้ เนื่องจากคุณกำลังสูญเสียข้อมูลเมตาบางอย่างที่มาพร้อมกับวัตถุเหล่านี้ (เช่น ความสามารถในการแคช ข้อมูลธีม ข้อมูลตัวจัดรูปแบบ การแก้ไขจากโมดูลอื่นๆ เป็นต้น) คุณสามารถ:

  • สร้างตัวจัดรูปแบบฟิลด์ สำหรับประเภทฟิลด์นั้น และแสดงเฉพาะเดลต้าเฉพาะ (โดยการแทนที่ viewElements() และเพิ่มเดลต้าเฉพาะเท่านั้น) คุณสามารถกำหนดค่าเดลต้าได้
  • หรือการรวมกันของ hook_field_formatter_third_party_settings_form และ hook_preprocess_field. แบบแรกจะให้คุณบันทึกการกำหนดค่าลงในการกำหนดค่าการแสดงผลฟิลด์ ในขณะที่แบบหลังจะช่วยให้คุณสามารถรับการกำหนดค่านั้นและแก้ไขผลลัพธ์ของฟิลด์ได้
    • ตัวอย่างที่ดีของชุดค่าผสมนี้ (แม้ว่าจะใช้เพื่อวัตถุประสงค์อื่น) สามารถพบได้ใน รั้ว โมดูล.

ในทั้งสองกรณี คุณสามารถเลือกกำหนดค่าผ่านผู้ดูแลระบบและไม่ฮาร์ดโค้ดการเลือกเดลต้าลงในเทมเพลต คุณยังสามารถทำให้ไม่ต้องสนใจทั้งสองอย่างเลยก็ได้ โดยปล่อยให้ฟิลด์แสดงเอาต์พุตเริ่มต้น

Patrick Star avatar
ie flag
ฉันใช้เดลตาเพื่อแยกค่าและกำจัดเทมเพลตที่ซ้อนกันของ drupal เพราะส่วนใหญ่ฉันทำเอง แต่ที่ฉันเห็นนี้ไม่ใช่ความคิดที่ดี ขณะนี้ปัญหาของฉันคือฉันได้สร้าง Widget แบบกำหนดเองสำหรับฟิลด์ Link และฉันต้องการรับค่าเพิ่มเติมจากวิดเจ็ตนี้ไปยังเทมเพลตของฉัน ขอบคุณสำหรับการตอบสนองของคุณ

โพสต์คำตอบ

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