Как загрузить коллекцию полей с узла?


У меня есть узел, на котором есть несколько коллекций полей.

Когда я смотрю на вывод node_load(), я вижу:

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

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

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

                )

        )

Какую функцию API я могу использовать для фактической загрузки данных полей, содержащихся в коллекции, которая имеет идентификатор entity_id 6, 7, 8 и т.д.?

 75
Author: kiamlaluno, 2011-09-11

4 answers

Дох! Я должен был посмотреть в модуле сбора полей:

entity_load('field_collection_item', array($item_id))
 90
Author: Justin, 2011-09-11 20:48:22

Существует также функция-оболочка, которая выполняет тот же трюк:

field_collection_item_load($id, $reset = FALSE)

Или в соответствии с комментарием используйте:

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

Для загрузки нескольких коллекций (например, если у вас есть , Добавьте больше кнопок ).

 40
Author: Vasiliy Grotov, 2015-11-04 16:00:49

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.
}
 22
Author: jonhattan, 2013-09-01 12:15:56

Вы можете использовать entity_metadata_wrapper из модуля Entity API:

$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);
}
 12
Author: milkovsky, 2013-10-02 07:35:50