node_load - Loader des nodes avec des paramètres drupal 7

22 août 2012Drupal 7.x

Drupal 7 change la manière dont vous allez pouvoir rechercher un node à loader avec des paramètres.

Drupal 6

Sous Drupal 6 on passait par node_load et un array de param afin de "filtrer" les bons nodes avec les paramètres voulus.

$param = array(
    'type' => 'your_node_type',
    'title' => 'your node title',
    'status' => 1,
);
$node = node_load($param);

Drupal 7

Sous Drupal 7 ce processus est un peu plus compliquer mais beaucoup plus puissant. On va en effet passer par la class EntityFieldQuery.

Ceci va nous permettre de faire des filtres non seulement sur les paramètres de base d'un node (nid, vid title, type etc...) mais aussi sur les field ajoutés à notre node; par exemple une référence un terme de taxonomie, ou un fichier , un nombre ou tout ce qui définit votre node.

$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
    ->entityCondition('bundle', 'your_node_type')
    ->propertyCondition('status', 1)
    ->fieldCondition('field_yourfield',   'tid', 11)
    ->fieldCondition('field_yourfield_2', 'value', 11, "=")
    ->fieldOrderBy('field_yourfield_2',   'value', 'ASC');
    ->execute();

$nodes = node_load_multiple(array_keys($entities['node']));

et voilà, on récupère ensuite un array de node filtré.