मैं नोड से फ़ील्ड संग्रह कैसे लोड करूं?


72

मेरे पास एक नोड है जिस पर कुछ फ़ील्ड संग्रह हैं।

जब मैं node_load()आउटपुट को देखता हूं, तो देखता हूं:

[field_rich_text_group] => Array
        (
            [und] => Array
                (
                    [0] => Array
                        (
                            [value] => 6
                        )

                    [1] => Array
                        (
                            [value] => 7
                        )

                    [2] => Array
                        (
                            [value] => 8
                        )

                )

        )

6 से, 7, 8, आदि की एक इकाई_ संग्रह में निहित फ़ील्ड डेटा को वास्तव में लोड करने के लिए मैं किस एपीआई फ़ंक्शन का उपयोग कर सकता हूं?

जवाबों:


88

रवींद्र! मुझे क्षेत्र संग्रह मॉड्यूल में देखना चाहिए था:

entity_load('field_collection_item', array($item_id))

1
मैं इसी तरह के समाधान की तलाश में हूं। आप आउटपुट कैसे लिखते हैं और उन्हें रेंडर एरे में रखते हैं? धन्यवाद
स्वान

मैंने इन वस्तुओं के लिए लेआउट बनाने के लिए कस्टम फ़ंक्शन का एक गुच्छा लिखा। अफसोस की बात है कि वे HTML लौटाते हैं, रेंडर करने योग्य सरणियाँ नहीं। रेंडर करने योग्य सरणियों का उपयोग करना अच्छा होगा, लेकिन मैं बिंदु पर पूरी तरह से स्पष्ट नहीं हूं (मुझे यकीन है कि ऐसा करने का एक अच्छा कारण है, मुझे बस एक स्पष्टीकरण नहीं मिला है जो प्रतिध्वनित होता है)।
जस्टिन

धन्यवाद। फ़ील्ड समन्वय वास्तव में फ़ॉर्म, और आउटपुट को आसान बनाने के लिए उपयोगी है, लेकिन जब यह कस्टम क्वेरीज़ की बात आती है, तो मुझे नेस्टेड एरेज़ में गोता लगाना लगता है, यहां तक ​​कि एंटिटी_मेटडाटा_वॉपर का उपयोग करना।
हंस

ओह, मैंने रैपर लिखा है कि बस घने सरणियों को मेरी ज़रूरत में बदल दें।
जस्टिन

Unit_load () उन नोड्स का एक सेट देता है जो "एंटिटी" के लिए विशिष्ट होते हैं और उनके साथ हमें उपयोगकर्ता परिभाषित फ़ील्ड भी मिलते हैं। हम एक इकाई के क्षेत्र से उपयोगकर्ता फ़ील्ड को कैसे अलग करते हैं? कोई सुराग?
राज पवन गुमडाल

38

एक रैपर फ़ंक्शन भी है जो एक ही चाल करता है:

field_collection_item_load($id, $reset = FALSE)

या टिप्पणी के अनुसार, उपयोग करें:

field_collection_item_load_multiple($ids = array(), $conditions = array(), $reset = FALSE)

कई संग्रह लोड करने के लिए (उदाहरण के लिए यदि आपके पास अधिक बटन हैं)।


5
@ Vasiliy-grotov के ऊपर दिए गए उत्तर के अनुसार, आप field_collection_item_load_multiple($ids = array(), $conditions = array(), $reset = FALSE)कई संग्रह लोड करने के लिए भी उपयोग कर सकते हैं (उदाहरण के लिए यदि आपके पास "अधिक जोड़ें" बीटीएन है)।
मीडियाशैली

21

सही संशोधन को लोड करने के लिए field_collection_field_get_entity () का उपयोग किया जाना चाहिए।

उदाहरण का उपयोग:

$node = node_load(1);
$items = field_get_items('node', $node, 'field_fc');
foreach ($items as $item) {
 $fc = field_collection_field_get_entity($item);
 // Do something.
}

1
फ़ील्ड संग्रह में दिनांक फ़ील्ड को कैसे असाइन किया जाए? मैंने निम्नलिखित चीज़ों का उपयोग किया है। .लेकिन कोई मूल्य इसके लिए नहीं छाप रहा है।
हरिकिशन

इसके लिए धन्यवाद। मुझे लगातार चेतावनी मिल रही थी: array_flip (): केवल STRING और INTEGER मानों को फ्लिप कर सकते हैं! साथ ... item_load () और इससे समस्या हल हो गई।
नदिम

11

आप Entity API मॉड्यूल entity_metadata_wrapperसे उपयोग कर सकते हैं :

$node_wrapper = entity_metadata_wrapper('node', $node);
$field_collection = $node_wrapper->field_rich_text_group[0]->value();
dpm($field_collection);

आप सभी संग्रहों को भी देख सकते हैं:

$node_wrapper = entity_metadata_wrapper('node', $node);
foreach ($node_wrapper->field_rich_text_group as $field_collection_wrapper) {
  $field_collection = $field_collection_wrapper->value();
  dpm($field_collection);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.