2012-10-24 36 views
14

早上,即时尝试获取一组最新的节点类型,但似乎无法弄清楚如何按日期排序。继承人我的功能到目前为止:Drupal 7 - entityFieldQuery Order

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'])); 
} 

任何帮助将不胜感激!

回答

19

您在寻找fieldOrderBy()成员功能,例如

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

哇。第二个参数实际上是“值”。这令人惊讶地难以发现,并且看起来是最常见的用例。 –

+0

@JonSurrell从技术上讲,第二个参数是列名,在大多数情况下默认值为 – Kiee

20

你可能会寻找propertyOrderBy

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

,使用' - > range(0,15);'限制为15个节点。 – timofey

0

检索最新的帖子,你可以使用

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