Изучение различных методов получения термина таксономии страницы в Drupal 9

Drupal 9 предлагает различные методы для получения термина таксономии, связанного со страницей. В этой статье мы рассмотрим различные подходы с примерами кода, которые помогут вам понять и эффективно их реализовать.

Метод 1: использование диспетчера типов объектов

use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\taxonomy\Entity\Term;
// Inject the EntityTypeManagerInterface service.
public function __construct(EntityTypeManagerInterface $entityTypeManager) {
  $this->entityTypeManager = $entityTypeManager;
}
public function getPageTaxonomyTerm($pageNodeId) {
  $node = $this->entityTypeManager->getStorage('node')->load($pageNodeId);
  $termIds = $node->get('field_taxonomy')->getValue();
  $termId = reset($termIds)['target_id'];
  $term = Term::load($termId);

  return $term;
}

Метод 2: использование поля ссылки на объект

use Drupal\node\NodeInterface;
public function getPageTaxonomyTerm(NodeInterface $node) {
  $term = $node->get('field_taxonomy')->entity;

  return $term;
}

Метод 3: использование представления терминов таксономии

use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\taxonomy\Entity\Term;
// Inject the EntityTypeManagerInterface service.
public function __construct(EntityTypeManagerInterface $entityTypeManager) {
  $this->entityTypeManager = $entityTypeManager;
}
public function getPageTaxonomyTerm($pageNodeId) {
  $term = $this->entityTypeManager
    ->getViewBuilder('taxonomy_term')
    ->view(Term::load($termId));

  return $term;
}

Метод 4. Использование пользовательского запроса

use Drupal\Core\Database\Connection;
// Inject the database connection service.
public function __construct(Connection $database) {
  $this->database = $database;
}
public function getPageTaxonomyTerm($pageNodeId) {
  $query = $this->database->select('node__field_taxonomy', 'nt');
  $query->addField('nt', 'field_taxonomy_target_id', 'term_id');
  $query->condition('nt.entity_id', $pageNodeId);
  $termId = $query->execute()->fetchField();
  $term = Term::load($termId);

  return $term;
}

В этой статье мы рассмотрели четыре различных метода получения терминов таксономии страниц в Drupal 9. В зависимости от ваших конкретных требований и структуры проекта вы можете выбрать наиболее подходящий подход. Чтобы принять обоснованное решение, важно понимать контекст вашей реализации. Используя эти методы, вы можете эффективно работать с терминами таксономии страниц в своих проектах Drupal 9.