답변:
Drupal 버전에 따라 :
드루팔 6 :
$nodes = db_query('SELECT nid FROM {node} WHERE type="%s"', $type);
드루팔 7 :
$nodes = node_load_multiple(array(), array('type' => $type));
드루팔 8 :
$nids = \Drupal::entityQuery('node')
->condition('type', 'NODETYPE')
->execute();
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadMultiple($nids);
Drupal 6에는 이러한 API가 없습니다. 가장 가까운 방법은 컨텐츠 유형에 대한 모든 노드 ID를 올바르게 쿼리 한 다음 node_load ()를 사용하여 각 노드 ID를로드하는 것입니다. 그러나 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 를 사용 하여 노드 ID를 쿼리 한 다음 s 인수 node_load_multiple()
없이 사용해야 $condition
합니다.
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']));
}
이미 몇 가지 좋은 답변이 있지만 문자 그대로 질문을 받아 노드 만 참조합니다.
D6에는 요청 된 작업을 수행하기위한 API가 없으며 D7 이상의 노드로 자신을 제한 할 필요가 없으므로 좋은 대답은 엔티티 일반이어야한다고 생각합니다.
function entity_load_by_type($entity_type, $bundle, $limit = 10, $offset = 0) {
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', $entity_type)
->entityCondition('bundle', $bundle)
->range($offset, $limit);
$results = $query->execute();
return entity_load($entity_type, array_keys($results[$]));
}
EntityFieldQuery
했지만 이미 작성했습니다. user_load_multiple()
Drupal 7 이후 두 번째 인수는 더 이상 사용되지 않으며 사용 된 코드는 표시해야한다고 덧붙였습니다.
array_keys($results[$entity_type])
했습니까?
entity_load($entity_type, array_keys($results['node']));
. Havent는 다른 실체에 대해서도이를 테스트했습니다.
컨텐츠 유형에서 노드 목록 가져 오기
드루팔 6 :
$nodes = db_query('SELECT nid FROM {node} WHERE type="%s"', 'student_vote');
드루팔 7 :
$nodes = node_load_multiple(array(), array('type' => 'student_vote'));
드루팔 8 :
$nids = \Drupal::entityQuery('node')
->condition('type', 'student_vote')
->execute();
$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadMultiple($nids);
이것이 도움이 되길 바랍니다.