วิธีเพิ่มตัวแปรให้กับเทมเพลตฟิลด์กิ่งไม้


9

ในหน้าโหนดฉันต้องการเพิ่มชื่อโหนดไปยังเอาต์พุตข้างฟิลด์อื่น (ฟิลด์ตัวอย่าง)

ฉันสร้างใหม่field--field-example.html.twigแต่ไม่สามารถเข้าถึงตัวแปรหัวเรื่องโหนดเนื่องจากไม่มีในเทมเพลตฟิลด์

ฉันต้องการที่จะเพิ่มตัวแปรลงใน preprocess themename.themeรูปแบบ:

ฉันจะเพิ่มตัวแปรในthemename.themeและสิ่งที่จะเป็นรายการที่สอดคล้องกันในfield--field-example.html.twig?


ใช้ hook_preprocess_node เพื่อแยกค่าจากฟิลด์ที่คุณต้องการใช้ในเทมเพลต

@IvanJaros ฉันได้อัปเดตคำถามตอนนี้
Taylor Taff

คำตอบ:


15

เมื่อคุณถามเกี่ยวกับการส่งผ่านชื่อโหนดเป็นตัวแปรผ่านไฟล์. theme คุณสามารถใช้template_preprocess_fieldเพื่อทำสิ่งนี้:

  function themename_preprocess_field(&$variables, $hook) {
    if ($variables['element']['#field_name'] == 'field_example') {
      $variables['node_title'] = $variables['element']['#object']->getTitle();
    }
  }

จากนั้นในของfield--field-example.html.twigคุณคุณก็สามารถใช้{{node_title}}เพื่อแสดงชื่อโหนด

ดูคำตอบของ 4k4 ด้านล่าง


ฉันพยายามที่จะแก้ไขคำตอบของคุณเพื่อให้รวม 4k4 ที่ถูกต้อง แต่การแก้ไขของฉันถูกปฏิเสธเนื่องจากถือว่าไม่เกี่ยวข้อง ...
Taylor Taff

@TaylorTaff ที่อนุมัติการแก้ไขคือใคร ฉันไม่เคยเห็นมัน จะพยายามแก้ไขเพื่อรวมคำตอบด้านล่าง
Janey

@Janey ผู้ใช้จำนวนมากที่มีป้ายสถานะเพียงพอสามารถตรวจสอบการแก้ไขดังกล่าวได้ ฉันได้ทำบุ๊กมาร์กคำตอบของคุณเพื่อการตรวจสอบในอนาคต อีกหนึ่งคำถาม: พวกคุณแน่ใจว่า$variables['element']['#object']->getTitle();เป็น catchable ในpreprocess_field? เพราะสิ่งนี้จะตอบคำถามของฉันได้ที่นี่: drupal.stackexchange.com/questions/197497//
nilsun

11

มีวัตถุโหนดอยู่ในตัวแปรของแม่แบบฟิลด์ดังนั้นคุณไม่จำเป็นต้องมีฟังก์ชั่น preprocess

ในการรับหัวเรื่องจากโหนดในเทมเพลตฟิลด์:

{{ element['#object'].label }}

นี่ตอบคำถาม แต่ตามคำตอบอื่น ๆ ของ Janey จะมีประโยชน์มากกว่าฉันเพิ่มคำตอบลงในคำตอบนั้นและทำเครื่องหมายว่ายอมรับแล้ว
Taylor Taff

1
แต่คำถามของคุณอยู่ภายใต้สมมติฐานที่ผิด: "แต่ไม่สามารถเข้าถึงตัวแปรชื่อโหนดได้เนื่องจากไม่มีอยู่ในเทมเพลตฟิลด์"
4k4

ใช่ 4k4 คุณถูกต้องคำถามของฉันไม่ถูกต้อง
Taylor Taff
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.