Как загрузить коллекцию полей с узла?
У меня есть узел, на котором есть несколько коллекций полей.
Когда я смотрю на вывод 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 и т.д.?
4 answers
Дох! Я должен был посмотреть в модуле сбора полей:
entity_load('field_collection_item', array($item_id))
Существует также функция-оболочка, которая выполняет тот же трюк:
field_collection_item_load($id, $reset = FALSE)
Или в соответствии с комментарием используйте:
field_collection_item_load_multiple($ids = array(), $conditions = array(), $reset = FALSE)
Для загрузки нескольких коллекций (например, если у вас есть , Добавьте больше кнопок ).
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.
}
Вы можете использовать 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);
}