Nie ma takiego interfejsu API dla Drupala 6. Najbliższe, co możesz zrobić, to poprawnie zapytać o wszystkie identyfikatory węzłów dla typu zawartości, a następnie załadować każdy za pomocą node_load (), ale będzie to wymagało n + 1 zapytań i nie jest bardzo wydajne.
function node_load_by_type($type, $limit = 15, $offset = 0) {
$nodes = array();
$query = db_rewrite_sql("SELECT nid FROM {node} n WHERE type = '%s'", 'n');
$results = db_query_range($query, $type, $offset, $limit);
while($nid = db_result($results)) {
$nodes[] = node_load($nid);
}
return $nodes;
}
Uwaga: db_rewrite_sql
zapewni sprawdzenie dostępu i inne filtry zapewniane przez moduł (takie jak filtrowanie języka zapewniane przez moduł i18n).
W przypadku Drupala 7 możesz użyć, $nodes = node_load_multiple(array(), array('type' => $type));
ale $conditions
argument parametru node_load_multiple()
jest przestarzały. Zamiast tego należy użyć EntityFieldQuery do zapytania o identyfikatory węzła, a następnie użyć, node_load_multiple()
ale bez $condition
argumentu s.
function node_load_by_type($type, $limit = 15, $offset = 0) {
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', $type)
->range($offset, $limit);
$results = $query->execute();
return node_load_multiple(array_keys($results['node']));
}