Respuestas:
Use entity_load
para cargar la entidad como lo menciona @Nikhil.
Luego use entity_extract_ids , para extraer el paquete. Ejemplo:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
La función entity_extract_ids
devuelve una matriz indexada numéricamente (no una tabla hash) que contiene los elementos:
donde, 0
, 1
, y 2
son índices de matriz. Sin embargo, el enfoque utilizado por los módulos principales y contrib es utilizar la list()
función.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Aquí está el más limpio que obtuve del código del módulo Grupos orgánicos.
$wrapper = entity_metadata_wrapper($entity_type, $entity_id);
$bundle = $wrapper->getBundle();
Por ejemplo, puedo llamarlo así:
$wrapper = entity_metadata_wrapper('node', 1);
$bundle = $wrapper->getBundle();
Editar: como señaló @Clive, el método anterior depende del módulo de entidad.
Aquí hay otro método que no depende de ningún módulo adicional. Se explica aquí https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Copia pegando ese método:
function _entity_get_bundle($entity, $entity_type) {
$info = entity_get_info($entity_type);
if (empty($info['entity keys']['bundle'])) {
return $entity_type;
} else {
return $entity->{$info['entity keys']['bundle']};
}
}
$group_type, $gid
? y cual es el valor $bundle
?
entity_load
, por cierto, ¿cómo es más limpio?
entity_metadata_wrapper()
sea más limpio que el entity_extract_ids()
método. Además, confía en el módulo de entidad que se está instalando ...
Intenta la entidad de carga
Cargar entidades de la base de datos.
Las entidades se almacenan en una memoria caché estática y no requerirán acceso a la base de datos si se vuelven a cargar durante la misma solicitud de página.
$ entity_type : el tipo de entidad a cargar, por ejemplo, nodo o usuario.
$ ids : una matriz de ID de entidad, o FALSE para cargar todas las entidades.
$ condiciones : (en desuso) Una matriz asociativa de condiciones en la tabla base, donde las claves son los campos de la base de datos y los valores son los valores que esos campos deben tener. En cambio, es preferible utilizar EntityFieldQuery para recuperar una lista de ID de entidad que esta función puede cargar.
$ reset : si se restablece la memoria caché interna para el tipo de entidad solicitada.
Una matriz de objetos de entidad indexados por sus identificadores. Cuando no se encuentran resultados, se devuelve una matriz vacía.
Si desea una forma muy liviana, en términos de rendimiento, para obtener el tipo de nodo de la identificación del nodo, puede usar una sola consulta de selección en la tabla de nodos.
$type = db_query("SELECT type FROM {node} WHERE nid = :nid",
array(':nid' => $nid))->fetchField();
De esa manera, no necesita invocar todo el sistema de enlace de entidad, con entity_load, etc.
Es una consulta de selección única que usa la identificación del nodo indexado.