Немає такого API для Drupal 6. Найближчим тобою є правильний запит для всіх ідентифікаторів вузла для типу вмісту, а потім завантаження кожного за допомогою node_load (), але для цього знадобиться n + 1 запитів і не дуже ефективно.
function node_load_by_type($type, $limit = 15, $offset = 0) {
$nodes = array();
$query = db_rewrite_sql("SELECT nid FROM {node} n WHERE type = '%s'", 'n');
$results = db_query_range($query, $type, $offset, $limit);
while($nid = db_result($results)) {
$nodes[] = node_load($nid);
}
return $nodes;
}
Примітка: db_rewrite_sql
забезпечить перевірку доступу та фільтрацію, що надається іншим модулем (наприклад, фільтрування мови, що надається модулем i18n).
Для Drupal 7 ви можете використовувати, $nodes = node_load_multiple(array(), array('type' => $type));
але $conditions
аргумент node_load_multiple()
застарілий. Натомість слід використовувати EntityFieldQuery для запиту ідентифікаторів вузла, а потім використовувати, node_load_multiple()
але без $condition
аргументу s.
function node_load_by_type($type, $limit = 15, $offset = 0) {
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', $type)
->range($offset, $limit);
$results = $query->execute();
return node_load_multiple(array_keys($results['node']));
}