Доброго времени суток!
Помогите, пожалуйста, всю голову уже сломал, никак не могу понять как прописать в хуке theme_preprocess_page в переменную наименование термина таксономии.
В типе материала есть несколько полей, у которых тип "Ссылка на термин". Словари у каждого поля разные.
В файле tema.theme в хуке tema_preprocess_page пишу:
<?php
if ($node = \Drupal::request()->attributes->get('node')) {
$variables['taxo'] = $node->field_obl_prim->target_id;
}?>
А в файле page.html.twig в нужном блоке вывожу:
<div class="taxo">{{ taxo }}</div>
И выходит цифра 26 - это id термина, а вот как вывести наименование этого термина и его описание нигде так и не нашёл.
Комментарии
Дак вы и передаете в переменную id. Передавайте название термина
Если бы вы еще написали как это сделать, по разному пробовал написать, но target_id - единственное, что хоть что-то возвращает, в остальных случаях получаю пустое значение.
if ($node = \Drupal::request()->attributes->get('node')) {
$variables['taxo'] = $node->field_obl_prim->name;
}?>
Да я так уже пробовал, в этом случае вообще ничего не передается (((
Всем, кто хоть как-то пытался помочь, СПАСИБО! Еще немного поковырялся на форумах и в итоге нашел решение здесь же вот в этой теме "Как прикрепить к форме выпадающий список терминов таксономии?".
Решение получилось не очень изящным, но хоть что-то:
<?php
$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree('name_taxonomy', 0, NULL, TRUE);
foreach($terms as $term){
if ($term->tid->value == $node->field_obl_prim->target_id) {
$variables['taxo'] = $term->name->value;
}
}
?>
, где name_taxonomy - это машинное имя словаря таксономии.
Может кому-то тоже пригодится!