Темизация таксономии в page.html.twig

Аватар пользователя widla widla 22 июня 2019 в 19:25

Доброго времени суток!
Помогите, пожалуйста, всю голову уже сломал, никак не могу понять как прописать в хуке 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 термина, а вот как вывести наименование этого термина и его описание нигде так и не нашёл.

Лучший ответ

Аватар пользователя widla widla 23 июня 2019 в 15:14

Всем, кто хоть как-то пытался помочь, СПАСИБО! Еще немного поковырялся на форумах и в итоге нашел решение здесь же вот в этой теме "Как прикрепить к форме выпадающий список терминов таксономии?".

Решение получилось не очень изящным, но хоть что-то:

<?php
            $terms 
= \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree('name_taxonomy'0NULLTRUE);
            foreach(
$terms as $term){
                if (
$term->tid->value == $node->field_obl_prim->target_id) {
                    
$variables['taxo'] = $term->name->value;
                }
            }
?>

, где name_taxonomy - это машинное имя словаря таксономии.
Может кому-то тоже пригодится!

Комментарии

Аватар пользователя widla widla 22 июня 2019 в 22:54

Если бы вы еще написали как это сделать, по разному пробовал написать, но target_id - единственное, что хоть что-то возвращает, в остальных случаях получаю пустое значение.

Аватар пользователя widla widla 23 июня 2019 в 15:14

Всем, кто хоть как-то пытался помочь, СПАСИБО! Еще немного поковырялся на форумах и в итоге нашел решение здесь же вот в этой теме "Как прикрепить к форме выпадающий список терминов таксономии?".

Решение получилось не очень изящным, но хоть что-то:

<?php
            $terms 
= \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree('name_taxonomy'0NULLTRUE);
            foreach(
$terms as $term){
                if (
$term->tid->value == $node->field_obl_prim->target_id) {
                    
$variables['taxo'] = $term->name->value;
                }
            }
?>

, где name_taxonomy - это машинное имя словаря таксономии.
Может кому-то тоже пригодится!