Views - Фильтр по материалам с термином для родителей. Вывод родительских терминов, у потомков которых есть материалы (например главные разделы каталога)

Главные вкладки

Аватар пользователя Danis_Inf Danis_Inf 20 мая 2018 в 11:30

.
Доброго времени!

Вывел на главной странице каталога из таксономии только термины первого уровня через:

Критерии фильтрации > [Термин таксономии: Родительский термин (= )]

А как для них скрыть пустые, т.е. вывести только те термины, у потомков которых есть материалы?

Пробовал добавлять взаимосвязи (relationship):

Relationship > [Термин таксономии: Материалы с термином (связь обязательна)]

но при этом результаты вообще пустые. Этот метод работает для терминов, непосредственно которым принадлежат материалы, а мне нужно перенести подобное поведение на их родителей самого верхнего уровня:

- Термин 1
-- Термин 1.1
--- Материал 1.1
-- Термин 1.2
--- Материал 1.2

- Термин 2
-- Термин 2.1
--- Материал 2.1
-- Термин 2.2
--- Материал 2.2

- Термин 3
-- Термин 3.1
--- Нет материалов
-- Термин 3.2
--- Нет материалов

-----------

Нужно вывести:
- Термин 1
- Термин 2

Лучший ответ

Аватар пользователя Danis_Inf Danis_Inf 22 мая 2018 в 12:46

Как обычно - всем не равнодушным спасибо за помощь!
Оставлю решение на память потомкам:

Выводить нужно не родительские термины, а термины которым непосредственно принадлежат материалы и уже для них выводить их корневых родителей через Relationship.

1)
Взаимосвязи (Relationship):
* Термин таксономии: Материалы с термином (связь обязательна)
* Термин таксономии: Родительский термин (связь обязательна) **1

2)
Группировка полей в блоке "Формат" не нужна
Агрегация нужна

3)
Критерии фильтрации выставляем по нужному словарю в обычном порядке

4)
Выводим поля (со связью "Родитель" - см. выше **1)

На этом шаге вы получите список родительских терминов, но они будут дублироваться по количеству материалов, чтобы оставить по одному термину добавьте "Критерии сортировки" именно сортировки, а не фильтрации, в этом фишка:

5) Критерии сортировки
* Термин таксономии: Вес, (со связью "Родитель" - см. выше **1)
И поставьте настройки агрегации "Максимум" - это важно! Включение агрегации нужно только для этого пункта и именно в отличном от стандартных настроек агрегации типе для этого поля (максимум или сумма)

Смотрите скрины, надеюсь так благодарным потомкам будет понятнее

http://prntscr.com/jl1rov
http://prntscr.com/jl1tja
http://prntscr.com/jl1v6s
http://prntscr.com/jl1tu6
http://prntscr.com/jl1u9e
http://prntscr.com/jl1uj8

Доп. модули не использовались - это стандартный функционал Views

Комментарии

Аватар пользователя Danis_Inf Danis_Inf 22 мая 2018 в 12:46

Как обычно - всем не равнодушным спасибо за помощь!
Оставлю решение на память потомкам:

Выводить нужно не родительские термины, а термины которым непосредственно принадлежат материалы и уже для них выводить их корневых родителей через Relationship.

1)
Взаимосвязи (Relationship):
* Термин таксономии: Материалы с термином (связь обязательна)
* Термин таксономии: Родительский термин (связь обязательна) **1

2)
Группировка полей в блоке "Формат" не нужна
Агрегация нужна

3)
Критерии фильтрации выставляем по нужному словарю в обычном порядке

4)
Выводим поля (со связью "Родитель" - см. выше **1)

На этом шаге вы получите список родительских терминов, но они будут дублироваться по количеству материалов, чтобы оставить по одному термину добавьте "Критерии сортировки" именно сортировки, а не фильтрации, в этом фишка:

5) Критерии сортировки
* Термин таксономии: Вес, (со связью "Родитель" - см. выше **1)
И поставьте настройки агрегации "Максимум" - это важно! Включение агрегации нужно только для этого пункта и именно в отличном от стандартных настроек агрегации типе для этого поля (максимум или сумма)

Смотрите скрины, надеюсь так благодарным потомкам будет понятнее

http://prntscr.com/jl1rov
http://prntscr.com/jl1tja
http://prntscr.com/jl1v6s
http://prntscr.com/jl1tu6
http://prntscr.com/jl1u9e
http://prntscr.com/jl1uj8

Доп. модули не использовались - это стандартный функционал Views