แสดงฟิลด์โหนดภายใน page.html.twig


12

ฉันมีฟิลด์รูปภาพในประเภทเนื้อหาของฉัน (field_hero_image)

ฉันไม่ต้องการให้มันแสดงผลในไฟล์ node.html.twig อย่างไรก็ตามฉันต้องการแสดงในไฟล์ page.html.twig โดยเฉพาะฉันต้องการที่จะแสดงมันพร้อมกับชื่อหน้า

ฉันจะใช้รหัสใดในไฟล์ page.html.twig ของฉันเพื่อเข้าถึงฟิลด์ระดับโหนดและแสดงผล

(มีคำถามคล้ายกันโพสต์ แต่ฉันไม่สามารถใช้คำตอบที่ให้ไว้เพื่อแก้ไขปัญหาของฉัน)

สิ่งนี้สำหรับ Drupal 8 ชุดรูปแบบ


2
@kiamlaluno - ทำไมคุณถึงแก้ไขคำถามของฉัน? การมี "Drupal 8" ในชื่อและในคำถามทำให้เห็นได้ชัดว่าผู้ให้บริการที่มีศักยภาพและทำให้ง่ายต่อการค้นหาใน Google เนื่องจากความแพร่หลายของเนื้อหาของ Drupal 6 และ 7 อยู่ที่นั่น ทำให้คำถาม / คำตอบของ Drupal 8 ชัดเจนมากเป็นประโยชน์ต่อชุมชนที่มีขนาดใหญ่มองหาคำตอบเฉพาะ D8 สงสัยว่าเหตุผลของคุณในการเปลี่ยนแปลงมันคืออะไร
kraftybasterd

โปรดอย่าแท็กที่ซ้ำกันในชื่อคำถาม แท็กสามารถมองเห็นได้ในทุกที่ที่มีคำถามปรากฏอยู่ดังนั้นจึงไม่จำเป็นต้องใช้แท็กในชื่อคำถาม
kiamlaluno

2
ชัดเจนฉันใหม่ที่นี่ ... แต่เมตาแท็ก (ในกรณีนี้คือ "8") ช่วยด้วยผลลัพธ์ของเครื่องมือค้นหาหรือไม่ ฉันรู้สึกเหมือนชื่อเนื้อหาที่มี Drupal 8 หรือ Drupal 7 อาจช่วยให้ผู้คนค้นหาคำตอบผ่าน Google ... แค่มีแนวคิด
kraftybasterd

คำตอบ:


26

หลังจากทำการวิจัยเพิ่มเติมอีกเล็กน้อยฉันก็สามารถค้นหาคำถามอื่น ๆ ได้เพียงพอและบน drupal.org เพื่อบรรลุสิ่งที่ฉันต้องการจะทำ

ไม่จำเป็นต้องทำการประมวลผลล่วงหน้าสำหรับคำตอบนี้ดังนั้นจึงไม่จำเป็นต้องเพิ่มรหัสลงในไฟล์ mytheme.theme ของคุณ
ตัวแปรทั้งหมดเหล่านี้สามารถเข้าถึงได้ใน page.html.twig โดยค่าเริ่มต้น

ที่จะทำให้ข้อมูลของค่าเริ่มต้นภายใน page.html.twig {{ node.field_some_name.value }}คุณมักจะใช้ตัวแปรทวิในขณะที่

หากคุณมีข้อมูลภาพและต้องการที่จะทำให้ URL ของภาพที่เก็บไว้ในเขตข้อมูลที่อยู่ภายในแม่แบบ page.html.twig {{ file_url(node.field_some_image.entity.fileuri) }}ที่คุณจะใช้

สุดท้ายหากคุณต้องการที่จะทำให้ชื่อของโหนดภายในเทมเพลต page.html.twig {{ node.label }}ที่คุณจะใช้

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


ฉันไม่เชื่อมีความรู้สึกว่าใน D7 สิ่งนี้ควรอยู่ในเช่นฟังก์ชั่น preprocess อย่างไรก็ตามตัวอย่างของfile_url()ในเอกสาร ( drupal.org/docs/8/theming/twig/functions-in-twig-templates ) ทำสิ่งนี้ทั้งหมดดังนั้นจึง upvoted
เกรแฮม C

คุณจะวนลูปผ่านประเภทเนื้อหาที่เฉพาะเจาะจงและส่งออกค่าของเขตข้อมูลภายในได้page.html.twigอย่างไร
Naourass Derouichi

2

มีสามวิธีที่สะดวกสำหรับการทำงานกับสิ่งนี้ซึ่งทั้งหมดช่วยให้คุณประหยัดเวลาในการเรนเดอร์เรนเดอร์ที่ซับซ้อน

  1. การใช้Display Suite (ที่มี submodule ds_extras) คุณสามารถกำหนดให้ฮีโร่ในภูมิภาคบล็อก ("block ภูมิภาค") ซึ่งเป็นโหมดการแสดงผลที่แตกต่างกัน (เช่นเพียงหนึ่งที่มีภาพฮีโร่) ดังนั้นคุณจะได้รับโหมดการแสดงผลที่แตกต่างกันสองโหมดที่แสดงพร้อมกัน โปรดทราบว่า hooks preprocess บางอย่างอาจไม่ทำงานตามที่คุณคาดหวังหากคุณทำเช่นนี้

  2. โมดูล twig_tweakง่ายมากงานดังกล่าวและสามารถให้งบกิ่งง่ายขึ้นสำหรับค่าฟิลด์ ดูที่สูตรโกงสำหรับการใช้งานทั่วไป: {{ drupal_field('field_image', 'node', 1) }}ลายเซ็นของฟังก์ชั่นคือ:drupalField($field_name, $entity_type, $id = NULL, $view_mode = 'default', $langcode = NULL)

  3. twig_field_valueโมดูลทำให้งบกิ่งง่าย ต่อ README.txt:<img src={{ file_url(content.field_image|field_target_entity.uri.value) }} alt={{ content.field_image|field_raw('alt') }} />

ถ้าฉันรู้เรื่องนี้มาก่อนมันจะช่วยฉันได้มาก!


1
นี่คือคำตอบที่ถูกต้อง จากประสบการณ์ของฉัน{{ node.field_some_name.value }}ไม่ได้ทำให้ฟิลด์ มันไม่ได้เรียกใช้ชุดรูปแบบเต็มรูปแบบ (ฟังก์ชั่น preprocess แม่แบบและอื่น ๆ ) OTOH ถ้าคุณใช้twig_tweakโมดูลคุณสามารถรับฟิลด์ที่เรนเดอร์เต็มได้ด้วย{{ node.field_some_name|view }}
kentr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.