Il n’existe pas d’API de ce type pour Drupal 6. Le plus simple que vous puissiez faire est d’interroger correctement tous les ID de nœuds pour le type de contenu, puis de les charger chacun à l’aide de node_load (), mais cela nécessitera n + 1 requêtes et n’est pas très efficace.
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;
}
Remarque: db_rewrite_sql
assurera la vérification de l'accès et le filtrage fourni par d'autres modules (tels que le filtrage de la langue fourni par le module i18n).
Pour Drupal 7, vous pouvez utiliser $nodes = node_load_multiple(array(), array('type' => $type));
mais l’ $conditions
argument de node_load_multiple()
est obsolète. Au lieu de cela, vous devez utiliser EntityFieldQuery pour rechercher les ID de nœud, puis les utiliser, node_load_multiple()
mais sans $condition
argument 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']));
}