मैं डेटाबेस से फ़ील्ड मान और उसका प्रारूप पढ़ रहा हूं। मैं उस मान को प्रारूप के साथ कैसे प्रस्तुत करूंगा?
मैं डेटाबेस से फ़ील्ड मान और उसका प्रारूप पढ़ रहा हूं। मैं उस मान को प्रारूप के साथ कैसे प्रस्तुत करूंगा?
जवाबों:
जब आप फ़ील्ड API काम करने में बहुत समय बिताते हैं, तो आपको वास्तव में डेटाबेस को स्वयं क्वेरी करने के बजाय फ़ील्ड सामग्री को रेंडर करने के लिए सीधे फ़ील्ड API का उपयोग करना चाहिए। बहुत सारे एनकैप्सुलेशन और एब्स्ट्रैक्शन ऐसे फ़ील्ड्स में जोड़े गए हैं जो बाईपास होने पर पुराने देवताओं को जगाएंगे।
फ़ील्ड 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);
एपीआई की जाँच करके, मुझे लगता है कि आप इसके लिए देख रहे हैं। (मैंने वैसे भी कोड का परीक्षण नहीं किया है)
$the_field = field_view_field($entity_type, $entity, $field_name, $display = array(), $langcode = NULL);
// render the field
drupal_render($the_field);
अद्यतन: डुप्लिकेट उत्तर, बस मुझे हटा सकता है। अन्य उत्तर पोस्ट किए गए जबकि मैं यह उत्तर लिख रहा हूं।
यदि आप मॉड्यूल का उपयोग करते हैं तो कस्टम फ़ॉर्मेटर्स आपके फ़ॉर्मेटर के माशाइन नाम से पहले उपसर्ग 'custom_formatters_' जोड़ना नहीं भूलते हैं:
$display = array('type' => 'custom_formatters_my_formatter');
ऐसा लगता है कि आप यह समायोजित करने के लिए टेम्प्लेट फ़ाइल को भी संपादित कर सकते हैं कि यह कैसे आउटपुट है:
1) एक कस्टम तिथि fomat सेट करें और "short_date_only" या जो भी हो जैसे मशीन का नाम दें। 2) उस प्रारूप का उपयोग करने के लिए सामग्री प्रकार के लिए प्रदर्शन विकल्पों को कॉन्फ़िगर करें 3) फ़ील्ड टेम्पलेट को फ़ील्ड की तरह कुछ से ओवरराइड करें - field_date_custom-content_type.tpl
$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]);