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.