Respuestas:
Puede consultar esa información directamente a través de node_load_multiple()
$nodes = node_load_multiple(array(), array('type' => 'my_type'));
Puede agregar tantas condiciones de propiedad a la $conditions
matriz (segundo argumento) como desee, por lo que el estado, la creación, etc. también son un juego justo.
$conditions
está técnicamente en desuso (me imagino a favor EntityFieldQuery
), pero las posibilidades de que esa funcionalidad se elimine de Drupal 7 son básicamente ninguna. Se rompería demasiado.
EntityFieldQuery
todo momento :) Puse esto es más para la posteridad que cualquier otra cosa
El núcleo de Drupal proporciona una clase llamada EntityFieldQuery()
. También hay una página de documento útil para usarlo, que tiene muchos ejemplos. En su forma más simple:
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'page')
->propertyCondition('status', 1);
$result = $query->execute();
if (!empty($result['node'])) {
$nids = array_keys($result['node']);
$nodes = node_load_multiple($nids);
foreach ($nodes as $node) {
// do something awesome
}
}
Esto cargará todos los nodos publicados del tipo "página". Periódicamente necesita ajustar esto a
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'page')
->propertyCondition('status', 1);
$result = $query->execute();
if (!empty($result['node'])) {
$nids = array_keys($result['node']);
foreach ($nids as $nid) {
$node = node_load($nid, NULL, TRUE);
// do something awesome
}
}
para evitar cargar demasiado de una vez, lo que puede causar problemas de memoria.