2012-10-24 2 views
14

matin, im essayant d'obtenir un ensemble des derniers types de nœuds mais cant semblent comprendre comment les commander par date. Heres ma fonction à ce jour:Drupal 7 - entityFieldQuery ordre

function latest_nodes($type, $limit = 15, $offset = 0) { 
    $query = new EntityFieldQuery(); 
    $tmp = $query->entityCondition('entity_type', 'node'); 
    if(is_string($type)) 
     $tmp->entityCondition('bundle', $type); 
    elseif(is_array($type)) 
     $tmp->entityCondition('bundle', $type, 'IN'); 
    $tmp->range($offset, $limit); 
    $results = $tmp->execute(); 
    return node_load_multiple(array_keys($results['node'])); 
} 

toute aide serait appréciée muchly!

Répondre

19

Vous êtes à la recherche de la fonction de membre fieldOrderBy(), par exemple

$query = new EntityFieldQuery(); 
$query->fieldOrderBy('field_name_of_field', 'value', 'DESC'); 
+0

Wow. Le second paramètre est littéralement 'value'. C'était étonnamment difficile à trouver, et semble être le cas d'utilisation le plus courant. –

+0

@JonSurrell Techniquement, le deuxième paramètre est le nom de la colonne, qui par défaut dans la plupart des cas pour valoriser – Kiee

20

Vous cherchez peut-être propertyOrderBy

$query = new EntityFieldQuery(); 
$query->propertyOrderBy('changed', 'DESC'); 
+2

utilisation '-> gamme (0,15);' de limiter à 15 noeuds. – timofey

0

pour récupérer le dernier message que vous pouvez utiliser

$query = new EntityFieldQuery(); 
$entities = $query->entityCondition('entity_type', 'node') 
        ->entityCondition('bundle', 'your_content_type') 
        ->propertyCondition('status', 1) 
        ->propertyOrderBy('created', 'DESC');