Представления и количество узлов для терминов таксономии


31

Как я могу отобразить значения количества узлов для терминов таксономии в представлениях? с сортировкой списка результатов в порядке убывания количества узлов.


2
Вот видео на YouTube очень хорошо объяснено здесь https://www.youtube.com/watch?v=w22Utjm-chs
wranvaud

Ответы:


41
  1. Создать представление таксономии
  2. Добавить группу узлов в отношения
  3. Добавьте название термина и поля nid для отображения
  4. Включить агрегацию в разделе «Другое» (Использовать агрегацию: Да)
  5. Нажмите значок настроек поля nid, выберите тип группы «count».

Найти экспорт просмотров, которые работали для меня.

$view = new view;
$view->name = 'term_node_count';
$view->description = 'Displays node count values for terms';
$view->tag = '';
$view->base_table = 'taxonomy_term_data';
$view->human_name = 'term_node_count';
$view->core = 7;
$view->api_version = '3.0-alpha1';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Defaults */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->display->display_options['use_ajax'] = TRUE;
$handler->display->display_options['group_by'] = TRUE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '100';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['pager']['options']['id'] = '0';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all'] = 0;
$handler->display->display_options['style_plugin'] = 'table';
$handler->display->display_options['style_options']['columns'] = array(
  'name' => 'name',
  'nid' => 'nid',
);
$handler->display->display_options['style_options']['default'] = '-1';
$handler->display->display_options['style_options']['info'] = array(
  'name' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
  ),
  'nid' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
  ),
);
$handler->display->display_options['style_options']['override'] = 1;
$handler->display->display_options['style_options']['sticky'] = 0;
/* Relationship: Taxonomy: Node */
$handler->display->display_options['relationships']['nid']['id'] = 'nid';
$handler->display->display_options['relationships']['nid']['table'] = 'taxonomy_index';
$handler->display->display_options['relationships']['nid']['field'] = 'nid';
$handler->display->display_options['relationships']['nid']['required'] = 0;
/* Field: Taxonomy: Term */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'taxonomy_term_data';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['name']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['name']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['name']['alter']['trim'] = 0;
$handler->display->display_options['fields']['name']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['name']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['name']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['name']['alter']['html'] = 0;
$handler->display->display_options['fields']['name']['element_label_colon'] = 1;
$handler->display->display_options['fields']['name']['element_default_classes'] = 1;
$handler->display->display_options['fields']['name']['hide_empty'] = 0;
$handler->display->display_options['fields']['name']['empty_zero'] = 0;
$handler->display->display_options['fields']['name']['link_to_taxonomy'] = 1;
/* Field: Node: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['relationship'] = 'nid';
$handler->display->display_options['fields']['nid']['group_type'] = 'count';
$handler->display->display_options['fields']['nid']['label'] = 'Count';
$handler->display->display_options['fields']['nid']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['nid']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['nid']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['nid']['alter']['trim'] = 0;
$handler->display->display_options['fields']['nid']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['nid']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['nid']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['nid']['alter']['html'] = 0;
$handler->display->display_options['fields']['nid']['element_label_colon'] = 1;
$handler->display->display_options['fields']['nid']['element_default_classes'] = 1;
$handler->display->display_options['fields']['nid']['hide_empty'] = 0;
$handler->display->display_options['fields']['nid']['empty_zero'] = 0;
$handler->display->display_options['fields']['nid']['link_to_node'] = 1;

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block_1');
$translatables['term_node_count'] = array(
  t('Defaults'),
  t('more'),
  t('Apply'),
  t('Reset'),
  t('Sort By'),
  t('Asc'),
  t('Desc'),
  t('Items per page'),
  t('- All -'),
  t('Offset'),
  t('node'),
  t('Term'),
  t('Count'),
  t('Block'),
);

Что делать, если вы хотите получить количество узлов терминов, прикрепленных к фактическому узлу?
Темарук

23

Все предыдущие ответы были очень полезны.

Я хотел получить таблицу, чтобы позволить пользователю сортировать по термину или по количеству.

Для этого я:

  1. Отношения> Термин таксономии: Содержание с термином
  2. Использовать агрегацию: да
  3. Поле> Содержание: Nid
  4. Тип агрегации для Nid = Count DISTINCT

Чего не хватает, так это как заставить два поля отображаться в строке. Для этого вам нужно перейти в «Формат» -> «Показать» -> «Настройки» и проверить оба элемента как встроенные.
Колан

12

Для правильного подсчета узла таксономии для терминов таксономии вам необходимо сделать следующее:

  1. В поле: добавить термин таксономии: имя
  2. В Отношениях добавьте термин Таксономия: Содержание с термином
  3. Добавьте контекстный фильтр для термина Таксономия: Имя

    3a. Выберите «Показать сводку»

    3b. Выберите «Показать количество записей со ссылкой» . Также установите базовый путь, если вы хотите, чтобы страница таксономии была правильно связана.


5

Ключевым моментом является то, что вы должны убедиться, что вы отметили флажок «агрегация» в расширенной опции представления.


Это будет работать гораздо лучше, если вы отредактируете чужой ответ (или вы можете написать более полный ответ).
michaelmcandrew

4

Добавьте аргумент (переименованный «контекстный фильтр» в последних представлениях) для терминов таксономии и выберите «Показать сводку». Затем выберите «Количество записей».


У меня есть представления 7.x-3.0-alpha1. Где находится «контекстный фильтр».
я.тек

Тогда это маркируется «Аргументы». Тем не менее, вам, вероятно, следует просто обновить его до последней версии.
tim.plunkett

3.0-alpha1 - последние версии для drupal 7. Вы имеете в виду обновление до версии dev?
я.тек

2
Альфа1 устарела 6 января. В эти выходные должна быть альфа2, но да, используйте разработчика.
tim.plunkett

Просмотров 3.0-rc1. Пробовал, как вы написали выше, но я получаю только например: Категория (1), Кошки (1). Везде 1 рядом с терминами таксономии, хотя у меня есть много узлов внутри терминов. В чем дело?
Александр Ким
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.