回答:
その情報を直接クエリすることができます node_load_multiple()
$nodes = node_load_multiple(array(), array('type' => 'my_type'));
$conditions
配列(2番目の引数)に好きなだけプロパティ条件を追加できるため、ステータスや作成なども公正なゲームです。
$conditions
技術的には非推奨です(私はに賛成EntityFieldQuery
すると思います)が、Drupal 7からその機能が削除される可能性は基本的にありません。それはあまりにも壊れます。
EntityFieldQuery
すべての方法を:)私は、これは何よりも後世のためのより多くのである置く
Drupalコアはと呼ばれるクラスを提供しますEntityFieldQuery()
。また、それを使用するための便利なドキュメントページがあり、多くの例があります。最も単純な形式では:
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'page')
->propertyCondition('status', 1);
$result = $query->execute();
if (!empty($result['node'])) {
$nids = array_keys($result['node']);
$nodes = node_load_multiple($nids);
foreach ($nodes as $node) {
// do something awesome
}
}
これにより、タイプ「ページ」のすべての公開されたノードがロードされます。これを定期的に調整する必要があります
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'page')
->propertyCondition('status', 1);
$result = $query->execute();
if (!empty($result['node'])) {
$nids = array_keys($result['node']);
foreach ($nids as $nid) {
$node = node_load($nid, NULL, TRUE);
// do something awesome
}
}
一度に大量にロードすることを避けるため、メモリの問題を引き起こす可能性があります。