В Drupal 8 модуль Таксономия позволяет классифицировать и организовывать контент с помощью терминов. Каждый термин может иметь иерархическую структуру, где один термин может быть родительским для другого термина. В этой статье мы рассмотрим различные методы получения родительских терминов данного термина на примерах кода. Давайте погрузимся!
Метод 1. Использование функции таксономии_get_parents():
Функция таксономии_get_parents() — это удобный способ получить родительские термины данного термина. Он принимает идентификатор термина в качестве параметра и возвращает массив идентификаторов родительских терминов.
$term_id = 123; // Replace with the actual term ID
$parent_term_ids = taxonomy_get_parents($term_id);
Метод 2: Использование запроса сущности:
Drupal 8 предоставляет систему запросов сущности, которая позволяет запрашивать сущности, включая термины таксономии. Создав запрос, вы можете получить родительские термины данного термина.
$term_id = 123; // Replace with the actual term ID
$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($term_id);
$parent_term_ids = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $term->bundle())
->condition('tid', $term->parent->target_id)
->execute();
Метод 3. Использование метода loadParents().
Другой подход заключается в использовании метода loadParents(), предоставляемого классом TermStorage. Этот метод позволяет загрузить все родительские термины данного термина.
$term_id = 123; // Replace with the actual term ID
$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($term_id);
$parent_terms = $term->loadParents();
Метод 4. Использование поля ссылки на объект.
Если у вас есть поле ссылки на термин в вашем типе контента, вы можете использовать его для получения родительских терминов. Предполагая, что у вас есть поле с именем «field_taxonomy_reference», вы можете получить доступ к родительским терминам следующим образом:
$node = \Drupal\node\Entity\Node::load($node_id); // Replace $node_id with the actual node ID
$parent_terms = $node->get('field_taxonomy_reference')->referencedEntities();
В этой статье мы рассмотрели различные методы получения родительских терминов данного термина в Drupal 8. Мы рассмотрели использование таких функций, как таксономия_get_parents(), использование системы запросов сущностей, использование метода loadParents() и использование ссылки на сущность. поля. Каждый метод предлагает свой подход, и вы можете выбрать тот, который лучше всего соответствует требованиям вашего проекта. Приятного кодирования!