it-swarm-es.com

¿Cómo se carga una colección de campos desde un nodo?

Tengo un nodo que tiene algunas colecciones de campos.

Cuando miro node_load() output, veo:

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

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

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

                )

        )

¿Qué función de API puedo usar para cargar realmente los datos de campo contenidos en la colección que tiene un entity_id de 6, 7, 8, etc.

73
Justin

Doh! Debería haber buscado en el módulo de colección de campo:

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

También hay una función de contenedor que hace el mismo truco:

field_collection_item_load($id, $reset = FALSE)

o según el comentario, use:

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

para cargar varias colecciones (por ejemplo, si tiene un Agregue más botones ).

40
Vasiliy Grotov

field_collection_field_get_entity () debe usarse para cargar la revisión correcta.

Ejemplo de uso:

$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.
}
21
jonhattan

Puedes usar entity_metadata_wrapper del módulo API de entidad :

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

También puedes recorrer todas las colecciones:

$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);
}
11
milkovsky