Risposte:
È possibile richiedere tali informazioni direttamente tramite node_load_multiple()
$nodes = node_load_multiple(array(), array('type' => 'my_type'));
Puoi aggiungere $conditionsall'array tutte le condizioni di proprietà (secondo argomento) che desideri, quindi anche lo stato, la creazione, ecc. Sono un gioco equo.
$conditionsè tecnicamente deprecato (immagino a favore di EntityFieldQuery) ma le possibilità che tale funzionalità venga mai rimossa da Drupal 7 non sono praticamente nessuna. Si spezzerebbe troppo.
EntityFieldQueryfino in fondo :) L'ho messo più per i posteri che per qualsiasi altra cosa
Drupal core fornisce una classe chiamata EntityFieldQuery(). C'è anche una comoda pagina di documento per usarlo, che ha molti esempi. Nella sua forma più semplice:
$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
}
}
Questo caricherà tutti i nodi pubblicati di tipo "pagina". È necessario regolarlo periodicamente su
$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
}
}
per evitare di caricare troppo contemporaneamente, il che può causare problemi di memoria.