Odpowiedzi:
Możesz zapytać o te informacje bezpośrednio przez node_load_multiple()
$nodes = node_load_multiple(array(), array('type' => 'my_type'));
Możesz dodać dowolną liczbę warunków właściwości do $conditions
tablicy (drugi argument), więc status, utworzone itp. Są również uczciwą grą.
$conditions
jest technicznie przestarzałe (wyobrażam sobie na korzyść EntityFieldQuery
), ale szanse, że ta funkcjonalność kiedykolwiek zostanie usunięta z Drupala 7, są w zasadzie żadne. Za bardzo by się zepsuło.
EntityFieldQuery
do końca :) Włożyłem to bardziej dla potomności niż cokolwiek innego
Rdzeń Drupala zapewnia klasę o nazwie EntityFieldQuery()
. Istnieje również przydatna strona dokumentu do jej używania, która zawiera wiele przykładów. W najprostszej formie:
$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
}
}
Spowoduje to załadowanie wszystkich opublikowanych węzłów typu „strona”. Musisz okresowo to dostosowywać
$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
}
}
aby uniknąć zbyt dużego ładowania na raz, co może powodować problemy z pamięcią.