Drupal → Вывод контента у термина и всех его дочерних терминов

13.02.2015

Есть древовидный словарь таксономии. Нужно на странице catalog/% вывести контент у термина указанного в адресе и всех его дочерних терминов.

Вариант 1

Если заранее известна максимальная глубина дерева, то можно добавить в представление контекстный фильтр по Content: Has taxonomy term ID (with depth) в котором указать максимальную глубину:

При таком варианте на каждый уровень вложенности создаётся отдельный sql join, что возможно не лучший выход (скриншот).

Вариант 2

Если максимальный уровень заранее неизвестен или хочется избавиться от джоинов, то можно добавить контекстный фильтр по полю термина (в моём случае это "Content: Tags (field_tags)"), отметить опцию Allow multiple values и подменить значение фильтра с помощью кода:

$tids = [$argument];
foreach (taxonomy_get_tree(VID_СЛОВАРЯ, $argument) as $terms) {
  $tids[] = $terms->tid;
}
$handler->argument = implode('+', $tids);
return TRUE;

Profit.

Полезное — как получить список всех дочерних терминов любой глубины

Написанное актуально для
Views 3
Похожие записи

Комментарии

Наташа
19.04.2015, 01:35

Подскажите пожалуйста, может конечно и не по теме вопрос - пытаюсь вывести на странице каталога уберкарт поле описание термина, но во вьюс uc_catalog (Содержимое) GRID такого поля нет? Причем если я кликаю по ссылке из словаря таксономии поле отображается именно в том термине, где я заполнила поле - то есть как и надо.

Добавьте relationship с полем термина

что-то вывело только свои, без дочерних
сделал так:

$taxonomy_id= arg(2);

$handler->argument = $taxonomy_id;

$childs = taxonomy_get_children($taxonomy_id);

foreach ($childs as $child) 
{
$handler->argument = $handler->argument."+".$child->tid;
}
return TRUE;
Гость
26.02.2020, 18:16

Как привязать представление к термину другого каталога?
Есть какое то решение?
Подскажи пожалуйста.
Есть вьюха, выводит термин из одного каталога терминов, её нужно привязать к термину другого каталога.
Спасибо

Добавить комментарий