Ich möchte alle Knoten, die vom my_custom_type
Typ sind, in Drupal 8 erhalten .
Ich weiß, dass ich alle Knoten (von jedem Typ) mit \Drupal\node\Entity\Node::loadMultiple()
und die Liste aller Typen mit bekommen kann \Drupal\node\Entity\NodeType::loadMultiple()
.
Aber wie bekommt man nur die Knoten eines bestimmten Knotentyps?
Ich möchte wirklich kein spezielles Modul dafür verwenden (wenn es möglich ist), sondern es einfach so einfach wie möglich halten. Ich werde die Lösung in meinem benutzerdefinierten Modul verwenden.
Das Laden aller Knoten mit \Drupal\node\Entity\Node::loadMultiple()
und das anschließende Einchecken des Knotentyps foreach
würde die Leistung zu sehr beeinträchtigen.
$nids = $this->entityTypeManager->getStorage('node')->getQuery()->condition('type','my_custom_type')->execute();
. Siehe drupal.org/node/2849874 .Eine andere Möglichkeit, dies zu tun, wäre die Verwendung dieses Codeausschnitts:
quelle
Normalerweise benötigen Sie veröffentlichte Knoten, nicht alle.
quelle
Es ist eigentlich sehr einfach,
Wenn Sie möchten, dass alle Knoten auch unveröffentlicht sind, verwenden Sie einfach:
quelle
Was früher ziemlich einfach zu finden und zu dokumentieren war, ist jetzt etwas verwirrender und schwieriger zu finden. Dies ist eines der Top-Suchergebnisse für dieses Thema. Daher möchte ich mir die Zeit nehmen, eine Lösung zu veröffentlichen, die ich mithilfe der neuen Methoden zusammenstellen konnte.
Mein Anwendungsfall besteht darin, eine Liste der veröffentlichten Knoten eines bestimmten Inhaltstyps abzurufen und diese als XML auf einer Seite zu veröffentlichen, damit sie von Dritten verwendet werden können.
Hier sind meine Erklärungen. Einige von ihnen könnten an dieser Stelle überflüssig sein, aber ich bin noch nicht fertig damit, den Code zu aktualisieren.
Hier ist der Code, mit dem Sie das Objekt einfach in das XML-Format einfügen können
Wenn Sie die Daten massieren müssen, müssen Sie ein Array ausfüllen und dort Änderungen vornehmen. Natürlich können Sie ein Standardbibliotheksarray auch weiterhin serialisieren.
Hoffe das hilft.
quelle