Как вывести термины в таком случае?
Есть: тип контента, к которому привязаны 2 словаря таксономии.
Как сделать, чтобы,
- Заходишь на страницу термина словаря 1
- И на ней выводятся все термины словаря 2
- Которые привязаны к нодам, которые привязаны к этому термину словаря 1.
Т.е. что тут происходит:
- Запрос ТИД термина словаря 1
- Запрос НИД всех связанных с термином нод
- Запрос все ТИД терминов словаря 2
- Вывод на экран.
А как это сделать через Views? Настраивать связи и контексты? Что там сделать?
Комментарии
Через вьюс скорее всего никак. https://drupal.ru/node/134125 - вот тут я немного рассуждал на эту тему, но получилось очень холиварно)
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Я бы попробовал через views_field_view, оно позволяет впихнуть вьюшку как поле во вьюшку. Не уверен что сработает, но попробовать стоит.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
по сути нужно вывести ноды, которые привязаны к термину 1, где группировка по терминам словаря 2.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
А кеширование вьюхи разве не поможет?
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Если хочется быстро - пишем самостоятельно запрос к БД. Топикстартер хотел через views, я подсказал ему вариант, который может сработать.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Справится views + panels
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Вот интересно, как. Если можно, то хотелось бы пошаговую инструкцию.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Принципиально panels_views работате с аргументами намного более гибко чем views настройка возможна но поколдовать конечно придется. И как часто в Друпале бывает есть варинат без UI с кодом но это уже совсем другая история.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Я просто сталкивался именно с такой задачей. Полностью мышкой накликать там не получится.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Обычная вьюха подобное не сделает. да и не думаю, что panels_views в качестве аргументов сможет взять id результата выборки по первому темину.
Думаю всё же подобное лучше реализовать своим модулем без всяких вьюх и панелей. ИМХО
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Я делал запрос и полученные айдишники передавал в контекстный фильтр вьюхи. Но это только для гибкости темизации.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Taxonomy term - вьюха идущая в коомплекте с views работает аналогичным способом
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Задача решается во вьюве в одно действие. Voviko написал как действовать
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
В группированном вьюсе нельзя скрывать все поля. А если не скрывать, то будут ноды, сгруппированные по терминам, а не термины.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Есть нода типа Новости, 2 словаря: Разделы и Регионы. Строю вьюв, который выводит регионы, которые есть в нодах для Раздела=Спорт (tid=1). Такое же требуется? Вьюв генерирует следующий sql (Drupal 7)
На выходе термины: Москва, Смоленская область
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
В ваших с вовико показаниях есть определенные расхождения. Он предлагает выводить ноды, а вы предлагаете выводить термины. Запрос довольно сложный, чтобы сразу понять, по каким сущностям сделана вьюха, и какие в ней есть связи. Лично мне интересны только эти два вопроса, а не количество действий в решении задачи.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Мне казалось, я Вовико правильно понял. Никакой магии в запросе нет, похоже Views доработали до ума. Картинка
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
В настройках агрегации что-нибудь есть?
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Агрегация включена, остальные параметры дефолтные
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Тогда вопрос, почему люди говорят одно, а копипастят другое?)) Вопросов от этого меньше не становится.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Собрал тестовую вьюху, показывает node. Агрегация нужна только при множественном значении термина. Никаких настроек агрегации нет. Не работает, если скрыть все поля.
Запрос сложный, и потому не каждый напишет. И самое главное, врядли кто-то лучше views это сделает, и, вероятно, задача не будет стоить того, чтобы вот так. потратить пол дня, на модуль.
В случае использования views можно скрыть лишнее через css, либо еще как извернуться. Я бы сделал через preg_match_all
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Но ведь в таком раскладе под названием термина пойдут поля всех его нод. А если у нас 50 терминов и 5000 нод? Запрашивать из базы 5000 сущностей ради вывода 50 и потом резать это в шаблонах?
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
А вот это уже похоже то, что нужно. Только надо включить уникальность в настройках запроса и всё работает, как надо. Что характерно, этот вариант больше никто не предложил))