Получаем нужные нам ноды с помощью EntityFieldQuery

Начиная с Drupal 7, вы можете выбрать ноды с условиями, с помощью класса EntityFieldQuery. Ниже приведены несколько примеров.

Выберите ноды конкретного типа содержимого, написанные определенным автором и размещено 1 час назад

  1. $query = new EntityFieldQuery();
  2. $query->entityCondition('entity_type', 'node') // тип сущности — нода
  3.   ->entityCondition('bundle', '<CONTENT TYPE>') // например, article
  4.   ->propertyCondition('uid', $uid) // ноды написанные определенным автором
  5.   ->propertyCondition('status', 1) // только опубликованные
  6.   ->propertyCondition('created', REQUEST_TIME - 3600, '>='); // созданные за последний час
  7. $result = $query->execute();
  8.  
  9. print_r($result)
  10.  
  11. // смотрим, что получилось
  12. /* ================
  13. Array
  14. (
  15.   [node] => Array
  16.   (
  17.     [529] => stdClass Object
  18.     (
  19.       [nid] => 529
  20.       [vid] => 529
  21.       [type] => <CONTENT TYPE>
  22.     )
  23.  
  24.     [531] => stdClass Object
  25.     (
  26.       [nid] => 531
  27.       [vid] => 531
  28.       [type] => <CONTENT TYPE>
  29.     )
  30.  
  31.   )
  32. )
  33. */

Выбираем ноды конкретного типа в которых есть поле с именем amiweb

  1. $query = new EntityFieldQuery();
  2. $query->entityCondition('entity_type', 'node')
  3.   ->entityCondition('bundle', '<CONTENT TYPE>') // например, article
  4.   ->propertyCondition('status', 1) // только опубликованные ноды
  5.   ->fieldCondition('field_name', 'value', 'amiweb', '='); // field_name = 'amiweb'
  6. $result = $query->execute();

Выбираем ноды конкретного типа контента с полем 'user reference' привязанным к uid = $uid

  1. $query = new EntityFieldQuery();
  2. $query->entityCondition('entity_type', 'node')
  3.   ->entityCondition('bundle', '<CONTENT TYPE>') // например, article
  4.   ->propertyCondition('status', 1) // только опубликованные ноды
  5.   ->fieldCondition('field_user_ref', 'uid', $uid, '=');
  6. $result = $query->execute();

Еще больше примеров на официальном сайте — страничка «Как использовать EntityFieldQuery»