Есть ли такая функция Drupal API, node_load()
которая будет возвращать список узлов данного типа?
Я пытался $nodes = node_load(array("type" => 'student_vote'))
, но он возвращает только один узел.
Я знаю, что могу написать что-то подобное node_load()
, но я хотел посмотреть, может ли быть что-то подобное уже там.
Для Drupal 6 такого API не существует. Самое близкое, что вы можете сделать, это правильно запросить все ID узла для типа контента, а затем загрузить каждый с помощью node_load (), но это потребует n + 1 запросов и не очень эффективно.
Примечание:
db_rewrite_sql
обеспечит проверку доступа и другую фильтрацию, обеспечиваемую модулем (такую как языковая фильтрация, предоставляемая модулем i18n).Для Drupal 7 вы можете использовать,
$nodes = node_load_multiple(array(), array('type' => $type));
но$conditions
аргументnode_load_multiple()
устарел. Вместо этого вы должны использовать EntityFieldQuery для запроса идентификаторов узлов, а затем использоватьnode_load_multiple()
без$condition
аргумента s.источник
Уже есть несколько хороших ответов, но они воспринимают вопрос буквально и относятся только к узлам.
Поскольку у D6 нет API для выполнения того, что запрашивается, и нет необходимости ограничивать себя узлами в D7 и вперед, я считаю, что хороший ответ должен быть универсальным.
источник
EntityFieldQuery
, но вы уже написали свой. Я бы просто добавил, что второй аргументuser_load_multiple()
не рекомендуется с Drupal 7, и используемый код должен быть тем, который вы показываете.array_keys($results[$entity_type])
?entity_load($entity_type, array_keys($results['node']));
. Не проверял это для других лиц ..друпал 8:
источник
Получить список узлов из типа контента
Drupal 6:
Drupal 7:
Drupal 8:
Надеюсь, что это будет полезно.
источник