Score:0

การเข้าถึงฟิลด์ย่อหน้าจากภายในย่อหน้าหลัก

ธง us

ฉันมีไฟล์ twig ของย่อหน้าที่เพิ่มไปยังธีมย่อย

ข้างในมีย่อหน้าอื่นที่ใช้อยู่ และอาจมีมากกว่า 1 ย่อหน้าย่อย

ฉันมีรหัสนี้:

 {% สำหรับคีย์ รายการใน content.field_faq_section_question if key|first != '#' %}
  {{ สิ่งของ }}
    
{% สิ้นสุดสำหรับ %}

และพิมพ์ชื่อเรื่องและช่องข้อความของย่อหน้าอย่างถูกต้อง แต่สิ่งที่ฉันต้องทำคือเข้าถึงแต่ละรายที่นี่

ฉันได้ลองวิธีต่างๆ มากมายในการเข้าถึงฟิลด์ต่างๆ แต่ก็ไม่ได้ผล การถ่ายโอนข้อมูลและ var_dump ของรายการจบลงด้วยหน้าจอว่างเปล่า

ฉันสามารถสร้างไฟล์ twig อีกไฟล์สำหรับย่อหน้านี้และใช้งานได้ แต่ฉันหวังว่าจะใช้คีย์เพื่อเพิ่ม id ให้กับ wrapper div

ฉันอยากจะ:

 {% สำหรับคีย์ รายการใน content.field_faq_section_question if key|first != '#' %}
  {{ item.title }}
    {{ item.text }}
{% สิ้นสุดสำหรับ %}

วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?

4uk4 avatar
cn flag
*หากต้องการใช้คีย์เพื่อเพิ่ม id ให้กับ wrapper div* คุณต้องมีเทมเพลตฟิลด์ ไม่ใช่เทมเพลตย่อหน้า: `field--paragraph--field-faq-section-question.html.twig`
sonfd avatar
in flag
คุณควรระวังการกระทำเช่นนี้ หากคุณแสดงผลแบบนี้ แสดงว่าคุณไม่ได้แสดงผลทั้งฟิลด์ อาจเป็นการข้ามข้อมูลเมตาหรือแอตทริบิวต์ของแคชที่สำคัญ ฯลฯ ที่อาจเพิ่มเข้ามาโดยโมดูลหรือธีม โดยทั่วไปแล้ว คุณไม่ควรต่อสู้กับระบบของ Drupal เพื่อ “ไม่สร้างไฟล์อีก” หรือเหตุผลอื่นๆ ที่คล้ายกัน การต่อสู้กับระบบเหล่านี้จะไล่ตามคุณในที่สุด ฉันสัญญา :)
Score:0
ธง cn

ก่อนอื่นฉันขอแนะนำ https://www.drupal.org/project/twig_xdebug เพื่อช่วยคุณแก้ปัญหาภายในเทมเพลตทวิก มันจะทำให้ชีวิตคุณง่ายขึ้น 100 เท่า

ปัญหาของคุณก็คือ เนื้อหา.field_faq_section_question เป็นอาร์เรย์แสดงผล ดังนั้นการวนซ้ำ "รายการ" จึงไม่ใช่การวนซ้ำเหนือเอนทิตีที่อ้างอิง -- มันวนซ้ำเหนือองค์ประกอบอาร์เรย์แสดงผล นั่นเป็นเหตุผลที่คุณต้องเพิ่มการตรวจสอบที่น่ารำคาญว่าคีย์เริ่มต้นด้วยหรือไม่ #.

หากคุณต้องการวนซ้ำ ค่า ของฟิลด์อ้างอิง จากนั้นคุณต้องวนซ้ำ #ไอเท็ม. จากนั้นคุณต้องคว้าย่อหน้าจริงที่มีการอ้างอิงเพื่อเข้าถึงฟิลด์นั้น ซึ่งสามารถทำได้ด้วย [some_entity_reference_item].entity.

{% สำหรับ k, ย่อหน้า_reference ใน content.field_faq_section_question['#items'] %}
  {% กำหนดย่อหน้า = วรรค_reference.entity %}
  {% ตั้ง my_id = วรรค.field_some_text_field.0.value %}

  <div id="{{ my_id }}">
    // ... อะไรก็ตามที่คุณต้องการเรนเดอร์
    // ฉันคิดว่าวิธีนี้จะใช้ได้เหมือนกับ {{ item }} ที่คุณใช้อยู่แล้ว
    {{ content.field_faq_section_question[k] }}
  </div>
{% สิ้นสุดสำหรับ %}

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

William Breindel avatar
us flag
นี่คือสิ่งที่ฉันต้องการและจำเป็นต้องรู้ ขอบคุณมาก. ทำงานเหมือนจับใจ
cn flag
ยอดเยี่ยม! โปรดยอมรับคำตอบนี้เมื่อคุณสามารถทำได้ เพื่อไม่ให้ SE bot นำกลับไปที่หน้าแรกในช่วงเวลาที่เหลือ :)

โพสต์คำตอบ

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