Czy istnieje taka funkcja Drupal API node_load()
, która zwróci listę węzłów danego typu?
Próbowałem $nodes = node_load(array("type" => 'student_vote'))
, ale zwraca tylko jeden węzeł.
Wiem, że mógłbym napisać coś takiego node_load()
, ale chciałem sprawdzić, czy coś takiego już tam jest.
Nie ma takiego interfejsu API dla Drupala 6. Najbliższe, co możesz zrobić, to poprawnie zapytać o wszystkie identyfikatory węzłów dla typu zawartości, a następnie załadować każdy za pomocą node_load (), ale będzie to wymagało n + 1 zapytań i nie jest bardzo wydajne.
Uwaga:
db_rewrite_sql
zapewni sprawdzenie dostępu i inne filtry zapewniane przez moduł (takie jak filtrowanie języka zapewniane przez moduł i18n).W przypadku Drupala 7 możesz użyć,
$nodes = node_load_multiple(array(), array('type' => $type));
ale$conditions
argument parametrunode_load_multiple()
jest przestarzały. Zamiast tego należy użyć EntityFieldQuery do zapytania o identyfikatory węzła, a następnie użyć,node_load_multiple()
ale bez$condition
argumentu s.źródło
Jest już kilka dobrych odpowiedzi, ale biorą pytanie dosłownie i odnoszą się tylko do węzłów.
Ponieważ D6 nie ma interfejsu API do robienia tego, o co jest poproszony, i nie jest konieczne ograniczanie się do węzłów w D7 i do przodu, uważam, że dobra odpowiedź powinna być ogólna.
źródło
EntityFieldQuery
, ale ty już napisałeś swoją. Dodałbym tylko, że drugi argumentuser_load_multiple()
był przestarzały od Drupala 7, a użyty kod powinien być tym, który wyświetlasz.array_keys($results[$entity_type])
?entity_load($entity_type, array_keys($results['node']));
. Havent przetestował to dla innych podmiotów.drupal 8:
źródło
Pobierz listę węzłów z typu zawartości
Drupal 6:
Drupal 7:
Drupal 8:
Mam nadzieję, że byłoby to pomocne.
źródło