Размер
Как вывести термины в таком случае?
Play

Как вывести термины в таком случае?

Есть: тип контента, к которому привязаны 2 словаря таксономии.

Как сделать, чтобы,

  1. Заходишь на страницу термина словаря 1
  2. И на ней выводятся все термины словаря 2
  3. Которые привязаны к нодам, которые привязаны к этому термину словаря 1.

Т.е. что тут происходит:

  1. Запрос ТИД термина словаря 1
  2. Запрос НИД всех связанных с термином нод
  3. Запрос все ТИД терминов словаря 2
  4. Вывод на экран.

А как это сделать через 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 и потом резать это в шаблонах?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

А вот это уже похоже то, что нужно. Только надо включить уникальность в настройках запроса и всё работает, как надо. Что характерно, этот вариант больше никто не предложил))

📎📎📎📎📎📎📎📎📎📎