আমি কোনও নোড থেকে ক্ষেত্রের সংগ্রহ কীভাবে লোড করব?


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 ফিরিয়ে দেয়, উপস্থাপনযোগ্য অ্যারে নয়। উপস্থাপনযোগ্য অ্যারেগুলি ব্যবহার করা ভাল হবে তবে আমি এই বিষয়টিতে সম্পূর্ণ পরিষ্কার নই (এটি নিশ্চিত করার কোনও ভাল কারণ আছে বলে আমি নিশ্চিত, আমি কেবল একটি অনুরূপ ব্যাখ্যা পাইনি যা অনুরণিত হয়)।
জাস্টিন

ধন্যবাদ। ক্ষেত্রের সংকলন প্রকৃতপক্ষে ফর্মগুলি এবং আউটপুটটি সহজ করার জন্য দরকারী, তবে এটি কাস্টম অনুসন্ধানগুলির ক্ষেত্রে, মনে হয় নেস্টেড অ্যারেগুলিতে ডুব দিতে হবে, এমনকি অ্যান্টি_মেটাডেটা_রাপর ব্যবহার করে।
রাজহাঁস

ওহ, আমি এমন মোড়ক লিখেছিলাম যা ঘন অ্যারেগুলি কেবল আমার প্রয়োজনীয় জিনিসগুলিতে পরিণত করে।
জাস্টিন

সত্তা_লোড () নোডের একটি সেট দেয় যা "সত্তা" এর সাথে সুনির্দিষ্ট এবং সেগুলি সহ আমরা ব্যবহারকারীর সংজ্ঞায়িত ক্ষেত্রগুলিও পাই। কীভাবে আমরা কোনও সত্তার ক্ষেত্রগুলি থেকে ব্যবহারকারীর ক্ষেত্রগুলিকে আলাদা করতে পারি? কোন সংকেত সনাক্ত করুন?
রাজ পবন গমদল

38

একই কৌশল সম্পন্ন একটি মোড়ক ফাংশন রয়েছে:

field_collection_item_load($id, $reset = FALSE)

বা মতামত অনুসারে, ব্যবহার করুন:

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

একাধিক সংগ্রহ লোড করতে (উদাহরণস্বরূপ যদি আপনার কাছে আরও বোতাম যুক্ত থাকে)।


5
উপরে @ ভ্যাসিলি-গ্রোটভের উত্তর অনুসারে আপনি field_collection_item_load_multiple($ids = array(), $conditions = array(), $reset = FALSE)একাধিক সংগ্রহ লোড করতেও ব্যবহার করতে পারেন (উদাহরণস্বরূপ যদি আপনার কাছে "আরও যোগ করুন" বিটিএন থাকে)।
মিডিয়াশলে

21

ক্ষেত্র_সংশ্লিষ্ট_ফিল্ড_সেট_েনটিটি () সঠিক সংশোধন লোড করার জন্য ব্যবহার করা উচিত।

ব্যবহারের উদাহরণ:

$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
ক্ষেত্রের সংগ্রহের ক্ষেত্রে নির্ধারিত তারিখের ক্ষেত্রগুলি কীভাবে পাবেন? আমি নিম্নলিখিত জিনিসটি ব্যবহার করেছি $ .কিন্তু কোন মান এর জন্য মুদ্রণ করছে না।
হারিক্রিস

এর জন্য ধন্যবাদ. আমি ক্রমাগত সতর্কতা পাচ্ছিলাম: অ্যারে_ফ্লিপ (): কেবলমাত্র STRING এবং INTEGER মানগুলি ফ্লিপ করতে পারে! ... আইটেম_লোড () দিয়ে এবং এটি সমস্যার সমাধান করেছে।
নাইদিম

11

আপনি সত্তা এপিআই মডিউলটি 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);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.