Всем привет!
На разрабатываемом сайте есть следующая структура
- Нода типа "Статья"
- Нода типа "Источник", связанная со статьёй ссылкой типа Node reference
- Словарь таксономии, классифицирующий источники по типу (в нём 7 терминов, обозначающих типы) Ссылка на термин указана в Источнике
Задача:
Сформировать таблицу (отчет), в которой было бы 8 колонок:
- Ссылка на статью
- Дата создания связанного источника с типом 1
- Дата создания связанного источника с типом 2
- Дата создания связанного источника с типом 3
- Дата создания связанного источника с типом 4
- Дата создания связанного источника с типом 5
- Дата создания связанного источника с типом 6
- Дата создания связанного источника с типом 7
С каждой статьёй может быть связано несколько источников, но интересует один - самый "свежий". Если ни одного источника определенного типа нет - поле для этого типа напротив статьи остается пустым.
Пытаюсь построить такое с помощью Views, но не могу найти в нём возможности прицепить несколько связанных нод по ссылкам Node Reference, профильтрованных по термину таксономии, указанному в них. Пробовал сделать собственный хэндлер по примерам из гитхаба - не смог понять как заставить его агрегировать (пример с Views API v2 не завелся вообще, v3 поле видит, но не возвращает данные).
Пробовал допилить Nodereference Count, чтобы он а) фильтровал и б) хранил даты в соответствующих полях, но не осилил. Да и идея хранить данные по связанным сущностям во внутренних полях ноды выглядит избыточной - хочется формирования на лету.
Писать свой модуль не хочется, т.к. в дальнейшем эту таблицу надо будет расширять, модифицировать, а данные из неё выгружать в Excel.
Подскажите, как эту задачу можно решать на Views?
Комментарии
Я бы решал с использованием модуля Views Field View ( http://xandeadx.ru/blog/drupal/639 ) в Views UI или вызывал в шаблоне программно вьюв для каждого типа источника. Метод затратный конечно, нужно кешировать.
То что нужно! Не знал что такой модуль существует.
Опишу подробнее, что нужно сделать для решения. Я использую русификацию интерфейса, так что привожу термины и названия полей в текущей версии их перевода.
Сначала нужно сделать "Дочернее" представление (7 шт. дисплеев, на каждом из отбираются только один тип источников):
Потом - "Родительское" представление
...
Можно еще попробовать обойтись одним дисплеем в дочернем представлении, сделав Тип источника как параметр.