Risposte:
È possibile richiedere tali informazioni direttamente tramite node_load_multiple()
$nodes = node_load_multiple(array(), array('type' => 'my_type'));
Puoi aggiungere $conditions
all'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.
EntityFieldQuery
fino 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.