Создание, продвижение сайтов
40-33-54

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

14 января 2017

Есть древовидный словарь таксономии. Нужно на странице 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.

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

Статьи

Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.