Небольшой примера кода для работы с таксономией в Drupal 10. Мы запросим дерево дочерних терминов и произведем их рендеринг.
Для начала загрузим какой-либо термин
1 2 3 |
$term_id = 1; $term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($term_id); |
Следующий шаг — получение дочерних элементов словаря:
1 2 3 |
$categs = \Drupal::entityTypeManager() ->getStorage('taxonomy_term') ->loadTree($term->vid->target_id, $term->id(), 1, true); |
Глубина загрузки по дереву выбрана равной 1, т.е. загрузим непосредственных «детей» термина.
Теперь рендеринг. Используем режим представления ‘teaser‘, т.к. режим по умолчанию ‘full’ обычно используется для страниц таксономии. Выполняется данная операция в два шага:
1 2 3 4 5 6 7 8 9 10 11 |
$categs = []; foreach ($categs as $categ) { // 1. получение массива переменных для шаблона $render_array = \Drupal::entityTypeManager() ->getViewBuilder('taxonomy_term') ->view($categ, 'teaser'); // 2. рендеринг $vars['categs'][] = \Drupal::service('renderer') ->renderRoot($render_array); } |
Далее вы, вероятно, передадите этот массив в шаблон (twig):
1 2 3 4 5 6 7 |
{% if categs|length > 0 %} <div class="subcategory__list"> {% for categ in categs %} {{ categ }} {% endfor %} </div> {% endif %} |