Я хотел бы получить все узлы, которые имеют my_custom_type
тип в Drupal 8 .
Я знаю, что могу получить все узлы (любого типа) \Drupal\node\Entity\Node::loadMultiple()
и список всех типов \Drupal\node\Entity\NodeType::loadMultiple()
.
Но как получить только узлы данного типа узла?
Я действительно не хочу использовать специализированный модуль для него (если это возможно), просто держите его как можно более простым. Я буду использовать решение в моем пользовательском модуле.
Загрузка всех узлов с \Drupal\node\Entity\Node::loadMultiple()
последующим проверкой их типа foreach
слишком сильно снизит производительность.
$nids = $this->entityTypeManager->getStorage('node')->getQuery()->condition('type','my_custom_type')->execute();
. См. Drupal.org/node/2849874 .Другой способ сделать это - использовать этот фрагмент кода:
источник
Обычно вам нужны опубликованные узлы, а не все.
источник
На самом деле это очень легко,
Если вы хотите, чтобы все узлы также не публиковались, просто используйте:
источник
То, что когда-то было довольно просто выяснить и найти документацию, стало немного более запутанным и трудным для поиска. Это один из лучших результатов поиска по этой теме, поэтому я хочу выделить время, чтобы опубликовать решение, которое я смог собрать, используя новые методы.
Мой вариант использования - получить список опубликованных узлов определенного типа контента и опубликовать их на странице в виде XML для использования третьей стороной.
Вот мои заявления. Некоторые из них могут быть излишними на данный момент, но я еще не закончил обновление кода.
Вот код, чтобы просто передать объект в XML
Если вам нужно обработать данные, вам нужно будет заполнить массив и внести в него изменения. Конечно, вы все еще можете сериализовать стандартный библиотечный массив.
Надеюсь это поможет.
источник