Chciałbym uzyskać wszystkie węzły tego my_custom_type
typu w Drupal 8 .
Wiem, że mogę pobrać wszystkie węzły (dowolnego typu) \Drupal\node\Entity\Node::loadMultiple()
i listę wszystkich typów według \Drupal\node\Entity\NodeType::loadMultiple()
.
Ale jak uzyskać tylko węzły danego typu węzła?
Naprawdę nie chcę używać do tego specjalnego modułu (jeśli to możliwe), po prostu staraj się, aby był tak prosty, jak to możliwe. Użyję rozwiązania w moim niestandardowym module.
A załadowanie wszystkich węzłów, \Drupal\node\Entity\Node::loadMultiple()
a następnie sprawdzenie ich typu foreach
zbyt mocno wpłynęłoby na wydajność.
$nids = $this->entityTypeManager->getStorage('node')->getQuery()->condition('type','my_custom_type')->execute();
. Zobacz drupal.org/node/2849874 .Innym sposobem na to byłoby użycie tego fragmentu kodu:
źródło
Zwykle potrzebujesz opublikowanych węzłów, nie wszystkich.
źródło
To jest naprawdę bardzo łatwe,
Jeśli chcesz, aby wszystkie węzły również nie zostały opublikowane, użyj:
źródło
Coś, co kiedyś było dość proste do znalezienia i znalezienia dokumentacji, stało się nieco bardziej mylące i trudne do znalezienia. Jest to jeden z najlepszych wyników wyszukiwania w tym temacie, dlatego chcę poświęcić czas na opublikowanie rozwiązania, które udało mi się opracować przy użyciu nowych metod.
Mój przypadek użycia polega na uzyskaniu listy opublikowanych węzłów określonego typu treści i opublikowaniu ich na stronie jako XML do wykorzystania przez stronę trzecią.
Oto moje deklaracje. Niektóre z nich mogą być w tym momencie zbędne, ale jak dotąd nie skończyłem aktualizować kodu.
Oto kod, aby po prostu wprowadzić obiekt do pliku XML
Jeśli potrzebujesz masować dane, musisz wypełnić tablicę i dokonać edycji. Oczywiście nadal można serializować standardowy zestaw bibliotek.
Mam nadzieję że to pomoże.
źródło