Drupal → Как с помощью Views 3 вывести список терминов с количеством помеченных ими нод

25.07.2011

Список терминов

Во втором Views подобные задачи решались либо с помощью дополнительных модулей, либо с помощью сниппетов. В Views 3 же стало возможно использовать агрегатные функции COUNT, AVG, MAX, MIN и SUM:

1. Создаём представление по терминам:

2. Добавляем Relationship "Taxonomy term: Content using ИМЯ_СЛОВАРЯ" (в принципе можно и "Taxonomy term: Content with term"):

На втором шаге отмечаем опцию Require this relationship:

Этим пунктом мы к основной таблице taxonomy_term_data подключили таблицу node.

3. В блоке Other включаем пункт Use aggregation:

Благодаря этому пункту можно будет использовать агрегатные функции.

4. Добавляем новое поле Content: nid:

На втором шаге выбираем агрегатную функцию Count:

На третьем шаге можно добавить префикс и суффикс полю:

Результат:

Полезные материалы по теме:
Использование GROUP BY и агрегатных функций в Views 3 (видео)
Программно вывести термины словаря в виде дерева с подсчётом количества материалов
Список тегов материала "как на стэковерфлов"

Написанное актуально для
Views 3.x
Похожие записи

Комментарии

Это круто. Не думал что в вьевсе такое сделают. Зачет.

Столкнулся с проблемой при использовании этих функций.
Суть в следующем: у термина есть поле изображение, при группировке оно не выводится. Без группировки все норм, выводится и термин и его изображение. Кто-нибудь сталкивался? Есть решение?

Проверил еще раз. Получаю над областью предпросмотра два сообщения:
инфо: 1311761233

и

ошибка: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id, taxonomy_term_data_name, taxonomy_term_data_vid, tid_1, taxonomy_vocabulary_' at line 9

Без использования агрегации картинки выводятся, как только ставлю Use aggregation: Да - появляются те сообщения, которые я упомянул выше.

Есть предположения, в чем может быть трабл?

это т.н. summary, оно для другого и далеко с ним не уедешь

Со 2-ми вьюсами все ок, получалось. Это с 3-ми вот такое вышло. Покручу еще на нулевой сборке, когда найду причину - отпишу.

Мой комментарий касался вот этого "Во втором Views подобные задачи решались либо с помощью дополнительных модулей, либо вообще без Views с помощью сниппетов." Конкретно эту задачу через Views 2.x решить можно. Было бы любопытно, почему такое решение Вы считаете некорректным.

это просто вид страницы при отсутствии аргумента, на этом функции summary аргументов заканчиваются. попробуйте сделать полноценную навигацию по таксономии

Гость
10.09.2011, 01:05

ох, спасибо тебе! …замучался искать. решение неочевидное…

Vikky Shostak
12.09.2011, 14:28

Огромное человеческое спасибо за материал :)

Только одна поправочка: у меня не было поля Content: nid (пункт 4). Заменил его полем "Добавляемый термин: ID термина". Всё работает.

Подскажите, пожалуйста, можно ли в одном представлении построить иерархию Словарь->Термин->Дочерний термин? С соответствующей группировкой в отображении по родительским терминам. Или все-таки делать(как у меня сейчас) несколько вьюшек Словарь->Термин?

Гость
11.10.2011, 14:40

А как привести такой список к виду как у вас на сайте (счётчик сразу после поля "Раздел"), а не так как получается по умолчанию.

Можно в настройках полей включить Встроенные поля.

Гость
12.10.2011, 01:26

Всё супер гуд, спасибо! (обеим ответам)

Большое спасибо, долго ломал голову как это можно сделать, но с вашими скринами всё получилось.
Написал тоже самое, только добавил больше описания и скринов
http://nixtalks.com/views
http://nixtalks.net/views (на англ.)

xandeadx, Как убрать из подсчета неопубликованные материалы?

Я добавил фильтр Содержимое: Опубликовано
Но тогда у меня появляется пустая страница.
А хочется вот так:
ВАЗ 2101 (0)
ВАЗ 2102 (0)
...

Сейчас так:
ВАЗ 2101 (0)
ВАЗ 2102 (1) - есть одино объявление снятое с публикации

У меня нулевые результаты тоже показываются. Наверное из-за этого проблема.

Разобрался, проблема в модуле Auto Expire. После окончания срока публикации объявление не показывалось, но имело статус Опубликовано, потому оно и отображалось в счетчике.

добрый день.
с термином получилось, спасибо!
а как сделать в содержимом?
Добавляю поле COUNT(Содержимое: Nid), выводится "(1) (1) (1) (1) (1) ", и не груперуется, как сгрупировать, что бы было "(5) "

Как долго я искал решение, а оно лежало здесь. Автору поклон.

Большое спасибо! Как раз искал, как такое сделать для своего недо-блога/недо-записной книжки

а можно ли из вывода этой вьюхи построить меню?

смотря какие функции вам нужны от меню

в шестерке аналогичное меню делал taxonomy_menu, но в семерке его функционал значительно скуднее, и число нод в терминах модуль теперь не выводит, вот и думаю, как бы такое реализовать малой кровью.

и число нод в терминах модуль теперь не выводит

замечательно выводит

в -dev версии? потому что в 7.x-1.2 даже галки нет для включения числа нод.

Николай
24.07.2012, 11:52

dev версия не выводит общее количество нод принадлежащих подчиненым терминам. Как автор сделал у себя такое меню? Чтобы подменю раскрывалось...

Гость
04.09.2012, 23:18

Огромное спасибо за материал.
Я два дня над вьюсом сидел, не получалось. Прочитал статью - и за пол-часа все сделал.

все прекрасно работает НО

терминры по которым нет соотвествующих материалов НЕ ВЫВОДЯТСЯ!

а мне нужно например: ТЕРМИН (0)

все перерыл, ну никак!
а у когото я смотрю наоборот, 0 показывает

как быть?

елки! я отключал, но видать не сохранил вьюху, вот и не сработало! отчего был в ступоре

спасибо!! все ок!

еще вопрос:
все работает, но мне нужно еще подсчитывать только те материалы, диапазон дат которых актуален на данный момент (startdate<=now<=enddate)

как такое можно сделать?

диапазон дат - это поле календаря

Добрый день. По слухам, сайт drupal-tv.ru - это ваш проект. Подскажите, что использовали при построении навигации по сайту, кроме штатных средств taxonomy. Спасибо.

И на орге его нет и достать его не получится... жаль. Но всё равно спасибо.

Vikky Shostak
27.02.2013, 00:14

Подскажи, пожалуйста, как сделать тоже самое для юзеров?

Условия: у юзеров при регистрации есть возможность выбрать к какой категории они относятся (10 шт. чекбоксов).

Задача: вывести список терминов (категорий) с количеством пользователей, которые при регистрации указали те или иные термины (категории). Должно быть примерно так - "Художник (13), Аниматор (141), Режиссёр (1), ...".

Делаю всё как для терминов (как тут описано), но указываю поле "User: Uid" и в взаимосвязях "Термин таксономии: User using Tags". При таком раскладе выводит только "(5)" - при условии, что один пользователь выбрал 5 шт. категорий при регистрации.

Прошу помощи, короче говоря.

Vikky Shostak
27.02.2013, 00:18

Когда отправил - понял как сделать ;) ложная тревога, прошу прощения..

grafdegan
02.03.2013, 23:52

Подскажите как вывести термины вместе с тайтлами нод вместо счетчика

На примере алфавита:

А(термин)
- Апельсин(нода)
- Ананас(нода)
- Абрикос(нода)
Б(термин)
- Банан(нода)
- Брокали(нода)
В(термин)
- Виноград(нода)

Именно такой вывод нужен!

Потыкал в вивсе, и в данный момент получается только так:

А(термин)
- Апельсин(нода)
А(термин)
- Ананас(нода)
А(термин)
- Абрикос(нода)
Б(термин)
- Банан(нода)
Б(термин)
- Брокали(нода)
В(термин)
- Виноград(нода)

т.е. термин каждый раз повторяется в зависимости от количества нод.

grafdegan
22.07.2013, 12:44

Спасибо, помогло!
Подскажите как вывести счетчик родительского тремина? пример ниже:

В наличии
Все марки (3) - как вывести это значение?
TOYOTA (2)
NISSAN (1)

grafdegan
22.07.2013, 13:25

может поможете с кодингом, за вознаграждение

grafdegan
22.07.2013, 14:34

не помогло, сколько стоит час вашей работы?

Ксения
15.11.2013, 14:37

Здорово!
На основе этого примера получилось вывести количество зарегистрированных пользователей в блоке Views.

Спасибо!

как выводить в одной линии ?
---------------------
TOYOTA (2)
------------------
TOYOTA
(2)

Алексей
31.10.2014, 09:51

Очередное спасибо, почти каждый день беру с сайта что-то полезное!

как выводить в одной линии ?

- отключить, не показывать поле с названием фирмы,
- у второго поля поставить галку Заменить выводимое полем значение и ввести типо:
[name] [nid]

Гость
14.11.2014, 12:12

А сортировать их по кол-ву нод в этой реализации можно?

Евгений
08.02.2016, 08:56

Подскажите пожалуйста, как вычесть 1 (единицу) из результата?

Гость
09.08.2016, 10:15

А возможно ли аналогичным образом вывести не кол-во материалов термина, а кол-во его дочерних терминов?

grafdegan
19.10.2016, 09:16

Для того чтобы отобразить колл. нод принадлежащих юзеру я добавил аргумент Содержимое: UID Автора а так же убрал галочку Эта связь обязательна
Из за аргумента перестали выводится термины которые не содержат нод
Как отобразить эти термины?

Добавить комментарий