Ответы:
Вы можете запросить эту информацию напрямую через 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
}
}
чтобы не загружать слишком много сразу, что может вызвать проблемы с памятью.