ฉันจะแสดงค่าฟิลด์รวมถึงรูปแบบได้อย่างไร


9

ฉันอ่านค่าฟิลด์และรูปแบบจากฐานข้อมูล ฉันจะแสดงค่าดังกล่าวด้วยรูปแบบได้อย่างไร

คำตอบ:


36

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

การใช้ Field API หากคุณต้องการฟิลด์ที่จัดรูปแบบทั้งหมดพร้อมด้วยเลเบลและค่าทั้งหมดคุณต้องการใช้field_view_field():

$nid = 1;
$node = node_load($nid);
$output = field_view_field('node', $node, 'field_foo');

// $output is a render array, so it needs to be rendered first
print render($output);

หากคุณเพียงต้องการแสดงค่าการจัดรูปแบบของหนึ่งรายการในเขตข้อมูลคุณจำเป็นต้องใช้field_view_value()ซึ่งเกี่ยวข้องกับ:

// Must load field content for entity before using field_view_value()
$fields = field_get_items('node', $node, 'field_foo');

// $index corresponds to the value you want to render. First value = 0.
$index = 0;
$output = field_view_value('node', $node, 'field_foo', $fields[$index]);

print render($output);

หากคุณต้องการใช้ตัวจัดรูปแบบอื่นที่ไม่ใช่ค่าเริ่มต้นที่ระบุสำหรับอินสแตนซ์ของฟิลด์ให้ส่งมันโดยใช้$displayพารามิเตอร์ในfield_view_field()หรือfield_view_value():

$display = array('type' => 'my_formatter');
$output = field_view_field('node', $node, 'field_foo', $display);

$index (พารามิเตอร์ที่สามของ field_view_value ())คือ $ เดลต้า ในฟิลด์ค่าเดียวนี่จะเป็น 0 ดังนั้นคุณสามารถใช้$output = field_view_value('node', $node, 'field_foo', $fields[0]);หรือ$output = field_view_value('node', $node, 'field_foo', $fields[$delta]);
johirpro

0

โดยการตรวจสอบ api ฉันคิดว่าคุณกำลังมองหาสิ่งนี้ (ฉันยังไม่ได้ทดสอบโค้ด)

$the_field = field_view_field($entity_type, $entity, $field_name, $display = array(), $langcode = NULL);

// render the field
drupal_render($the_field);

อัปเดต: คำตอบที่ซ้ำกันอาจเพียงแค่ลบฉัน คำตอบอื่น ๆ โพสต์ในขณะที่ฉันเขียนคำตอบนี้



0

ดูเหมือนว่าคุณสามารถแก้ไขไฟล์เทมเพลตเพื่อปรับวิธีการแสดงผลทางความหมาย:

1) ตั้งค่าวันที่ที่กำหนดเองและกำหนดชื่อเครื่องเช่น "short_date_only" หรืออะไรก็ตาม 2) กำหนดค่าตัวเลือกการแสดงผลสำหรับชนิดเนื้อหาเพื่อใช้รูปแบบนั้น 3) แทนที่เทมเพลตฟิลด์เป็นบางอย่างเช่นฟิลด์ - field_date_custom-content_type.tpl

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