แก้ไข hook_field_formatter_view หรือไม่


11

วิธีที่ดีที่สุดในการแก้ไขเอาต์พุตฟิลด์คืออะไร ฉันพบ " hook_field_formatter_view " แต่ดูเหมือนว่าไม่มีอะไรเหมือน "hook_field_formatter_view_alter" อยู่ ในกรณีของฉันฉันมีช่องที่อยู่ (โมดูลที่อยู่) ซึ่งใช้ในบานหน้าต่าง "การจัดส่ง" และ "การเรียกเก็บเงิน" ในหน้าเช็คเอาต์ของDrupalCommerce ฉันต้องการเพิ่ม js บางส่วนลงในช่องเหล่านี้ควรใช้แบบฟอร์ม API ของ Drupal "#attached"


JS ที่คุณต้องการเพิ่มในฟิลด์เหล่านี้คืออะไร
saadlulu

ปลั๊กอินการเติมข้อความอัตโนมัติ jquery
volocuga

คำตอบ:


9

คุณอาจต้องการลองแก้ไขด้วยฟังก์ชัน preprocess:

function example_preprocess_field(&$variables) {  
  $field_name = $variables['element']['#field_name'];  
  if ($field_name == 'field_example_field') {
    // Your code here.
  }
}

ฉันรันการทดสอบเพื่อแก้ไข$ ตัวแปร ['องค์ประกอบ'] ['# แนบ'] ['js']แต่ Drupal ไม่รู้จักการเปลี่ยนแปลงองค์ประกอบ ไม่แน่ใจว่าทำไม ดังนั้นคุณอาจต้องใช้ drupal_add_js


5

hook_field_formatter_view()ระบุโดยการกำหนดค่าการแสดงผลที่เรียกกันในfield_default_view()ซึ่งเป็นตัวที่เรียกว่า (ชั้นหรือสองด้านล่าง) field_attach_view()โดย

คุณสามารถดูได้จากลิงค์ที่สองที่โทรนี้hook_field_attach_view_alter()หลังจากที่เสร็จสิ้นด้วยตัวจัดรูปแบบฟิลด์:

drupal_alter('field_attach_view', $output, $context);

ดังนั้นคุณควรจะสามารถกำหนดเบ็ดที่

อย่างไรก็ตามโปรดทราบว่าคุณจะต้องค้นหาฟิลด์ในเอนทิตีอีกครั้งเนื่องจากจะเรียกใช้ hook สำหรับอาร์เรย์การเรนเดอร์ทั้งหมดไม่ใช่แค่เรนเดอร์การเรนเดอร์สำหรับหนึ่งฟิลด์ แต่ตัวอย่างของ hook ที่ลิงก์ไปด้านบนนั้นเป็นตัวอย่างของวิธีการทำเช่นนั้น

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