Answers:
您可以直接通过以下方式查询该信息 node_load_multiple()
$nodes = node_load_multiple(array(), array('type' => 'my_type'));
您可以根据需要向$conditions
数组(第二个参数)添加尽可能多的属性条件,因此状态,创建等也很公平。
$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
}
}
以避免一次加载太多,这可能会导致内存问题。