Không có API như vậy cho Drupal 6. Cách gần nhất bạn có thể làm là truy vấn chính xác tất cả ID nút cho loại nội dung sau đó tải từng cái bằng cách sử dụng node_load () nhưng điều này sẽ yêu cầu truy vấn n + 1 và không hiệu quả lắm.
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;
}
Lưu ý: db_rewrite_sql
sẽ đảm bảo kiểm tra truy cập và mô-đun khác được cung cấp lọc (chẳng hạn như lọc ngôn ngữ được cung cấp bởi mô-đun i18n).
Đối với Drupal 7, bạn có thể sử dụng $nodes = node_load_multiple(array(), array('type' => $type));
nhưng $conditions
đối số node_load_multiple()
bị phản đối. Thay vào đó, bạn nên sử dụng EntityFieldQuery để truy vấn ID nút sau đó sử dụng node_load_multiple()
nhưng không có $condition
đối số 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']));
}