2015-09-08 1 views
0

Je voudrais créer une vue qui montre tous les utilisateurs d'un groupe (dans ce cas un rôle) et leur nombre de messages pour une date fixe. J'en ai besoin pour montrer aussi les utilisateurs qui n'ont pas posté. Je peux obtenir ceci pour travailler tant qu'il n'y a aucun ensemble de filtres. Une fois que j'ajoute un filtre de date ou l'un des filtres de terme de taxonomie que j'ai sur les noeuds, il arrête d'afficher les utilisateurs qui n'ont pas posté dans cette date ou qui ont utilisé ces termes.Drupal 7 - Vues avec relation et filtre problème

La vue actuelle est une vue de type Utilisateur et la relation définie sur Utilisateur: Contenu créé et nécessite que cette relation ne soit PAS cochée.

actuel Voir l'exportation:

$view = new view(); 
$view->name = 'posts_by_group'; 
$view->description = ''; 
$view->tag = 'default'; 
$view->base_table = 'users'; 
$view->human_name = 'Posts by Group'; 
$view->core = 7; 
$view->api_version = '3.0'; 
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ 

/* Display: Master */ 
$handler = $view->new_display('default', 'Master', 'default'); 
$handler->display->display_options['title'] = 'Posts by Group'; 
$handler->display->display_options['use_more_always'] = FALSE; 
$handler->display->display_options['group_by'] = TRUE; 
$handler->display->display_options['access']['type'] = 'perm'; 
$handler->display->display_options['access']['perm'] = 'access user profiles'; 
$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'] = '20'; 
$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'] = 'nid'; 
$handler->display->display_options['style_options']['info'] = array(
    'name' => array(
    'sortable' => 1, 
    'default_sort_order' => 'desc', 
    'align' => '', 
    'separator' => '', 
    'empty_column' => 0, 
), 
    'nid' => array(
    'sortable' => 1, 
    'default_sort_order' => 'desc', 
    'align' => '', 
    'separator' => '', 
    'empty_column' => 0, 
), 
); 
$handler->display->display_options['style_options']['empty_table'] = TRUE; 
/* Relationship: User: Content authored */ 
$handler->display->display_options['relationships']['uid']['id'] = 'uid'; 
$handler->display->display_options['relationships']['uid']['table'] = 'users'; 
$handler->display->display_options['relationships']['uid']['field'] = 'uid'; 
/* Field: User: Name */ 
$handler->display->display_options['fields']['name']['id'] = 'name'; 
$handler->display->display_options['fields']['name']['table'] = 'users'; 
$handler->display->display_options['fields']['name']['field'] = 'name'; 
$handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE; 
$handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE; 
$handler->display->display_options['fields']['name']['element_label_colon'] = FALSE; 
$handler->display->display_options['fields']['name']['empty'] = '0'; 
$handler->display->display_options['fields']['name']['empty_zero'] = TRUE; 
$handler->display->display_options['fields']['name']['hide_alter_empty'] = FALSE; 
/* Field: COUNT(DISTINCT Content: 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'] = 'uid'; 
$handler->display->display_options['fields']['nid']['group_type'] = 'count_distinct'; 
$handler->display->display_options['fields']['nid']['label'] = '# of Posts'; 
$handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE; 
$handler->display->display_options['fields']['nid']['empty'] = '0'; 
$handler->display->display_options['fields']['nid']['hide_alter_empty'] = FALSE; 
/* Sort criterion: User: Created date */ 
$handler->display->display_options['sorts']['created']['id'] = 'created'; 
$handler->display->display_options['sorts']['created']['table'] = 'users'; 
$handler->display->display_options['sorts']['created']['field'] = 'created'; 
$handler->display->display_options['sorts']['created']['order'] = 'DESC'; 
/* Filter criterion: User: Roles */ 
$handler->display->display_options['filters']['rid']['id'] = 'rid'; 
$handler->display->display_options['filters']['rid']['table'] = 'users_roles'; 
$handler->display->display_options['filters']['rid']['field'] = 'rid'; 
$handler->display->display_options['filters']['rid']['value'] = array(
    15 => '15', 
); 
/* Filter criterion: Date: Date (node) */ 
$handler->display->display_options['filters']['date_filter']['id'] = 'date_filter'; 
$handler->display->display_options['filters']['date_filter']['table'] = 'node'; 
$handler->display->display_options['filters']['date_filter']['field'] = 'date_filter'; 
$handler->display->display_options['filters']['date_filter']['relationship'] = 'uid'; 
$handler->display->display_options['filters']['date_filter']['operator'] = '>='; 
$handler->display->display_options['filters']['date_filter']['exposed'] = TRUE; 
$handler->display->display_options['filters']['date_filter']['expose']['operator_id'] = 'date_filter_op'; 
$handler->display->display_options['filters']['date_filter']['expose']['label'] = 'Start Date'; 
$handler->display->display_options['filters']['date_filter']['expose']['operator'] = 'date_filter_op'; 
$handler->display->display_options['filters']['date_filter']['expose']['identifier'] = 'date_filter'; 
$handler->display->display_options['filters']['date_filter']['expose']['required'] = TRUE; 
$handler->display->display_options['filters']['date_filter']['expose']['remember'] = TRUE; 
$handler->display->display_options['filters']['date_filter']['expose']['remember_roles'] = array(
    2 => '2', 
    1 => 0, 
    3 => 0, 
    4 => 0, 
    5 => 0, 
    6 => 0, 
    7 => 0, 
    8 => 0, 
    9 => 0, 
    10 => 0, 
    11 => 0, 
    12 => 0, 
    13 => 0, 
    14 => 0, 
    15 => 0, 
    22 => 0, 
    16 => 0, 
    20 => 0, 
    17 => 0, 
    18 => 0, 
    19 => 0, 
    23 => 0, 
    21 => 0, 
    24 => 0, 
    25 => 0, 
); 
$handler->display->display_options['filters']['date_filter']['form_type'] = 'date_popup'; 
$handler->display->display_options['filters']['date_filter']['default_date'] = 'now -30 days'; 
$handler->display->display_options['filters']['date_filter']['date_fields'] = array(
    'node.created' => 'node.created', 
); 
/* Filter criterion: Date: Date (node) */ 
$handler->display->display_options['filters']['date_filter_1']['id'] = 'date_filter_1'; 
$handler->display->display_options['filters']['date_filter_1']['table'] = 'node'; 
$handler->display->display_options['filters']['date_filter_1']['field'] = 'date_filter'; 
$handler->display->display_options['filters']['date_filter_1']['relationship'] = 'uid'; 
$handler->display->display_options['filters']['date_filter_1']['operator'] = '<='; 
$handler->display->display_options['filters']['date_filter_1']['exposed'] = TRUE; 
$handler->display->display_options['filters']['date_filter_1']['expose']['operator_id'] = 'date_filter_1_op'; 
$handler->display->display_options['filters']['date_filter_1']['expose']['label'] = 'End Date'; 
$handler->display->display_options['filters']['date_filter_1']['expose']['operator'] = 'date_filter_1_op'; 
$handler->display->display_options['filters']['date_filter_1']['expose']['identifier'] = 'date_filter_1'; 
$handler->display->display_options['filters']['date_filter_1']['expose']['required'] = TRUE; 
$handler->display->display_options['filters']['date_filter_1']['expose']['remember_roles'] = array(
    2 => '2', 
    1 => 0, 
    3 => 0, 
    4 => 0, 
    5 => 0, 
    6 => 0, 
    7 => 0, 
    8 => 0, 
    9 => 0, 
    10 => 0, 
    11 => 0, 
    12 => 0, 
    13 => 0, 
    14 => 0, 
    15 => 0, 
    22 => 0, 
    16 => 0, 
    20 => 0, 
    17 => 0, 
    18 => 0, 
    19 => 0, 
    23 => 0, 
    21 => 0, 
    24 => 0, 
    25 => 0, 
); 
$handler->display->display_options['filters']['date_filter_1']['form_type'] = 'date_popup'; 
$handler->display->display_options['filters']['date_filter_1']['default_date'] = 'now'; 
$handler->display->display_options['filters']['date_filter_1']['date_fields'] = array(
    'node.created' => 'node.created', 
); 
/* Filter criterion: Content: Sponsor (field_sponsor) */ 
$handler->display->display_options['filters']['field_sponsor_tid']['id'] = 'field_sponsor_tid'; 
$handler->display->display_options['filters']['field_sponsor_tid']['table'] = 'field_data_field_sponsor'; 
$handler->display->display_options['filters']['field_sponsor_tid']['field'] = 'field_sponsor_tid'; 
$handler->display->display_options['filters']['field_sponsor_tid']['relationship'] = 'uid'; 
$handler->display->display_options['filters']['field_sponsor_tid']['value'] = array(
    0 => '54', 
); 
$handler->display->display_options['filters']['field_sponsor_tid']['reduce_duplicates'] = TRUE; 
$handler->display->display_options['filters']['field_sponsor_tid']['vocabulary'] = 'sponsor'; 

/* Display: Page */ 
$handler = $view->new_display('page', 'Page', 'page'); 
$handler->display->display_options['path'] = 'posts-by-group'; 

Répondre

0

Les champs que vous essayez filtre nécessiteront la relation.

+0

Oui, mais existe-t-il un moyen d'afficher ces champs, même si le nombre de posts est 0? La date semble être ce qui le tue. Je reçois une liste d'utilisateurs dans le groupe et un nombre de messages, puis une fois la date ajoutée, elle supprime toutes les personnes qui n'ont pas posté dans cette plage. J'aimerais qu'ils restent. –

+0

Cela est dû aux vues génère ses requêtes. Je recommanderais d'activer 'Afficher la requête SQL', afin que vous ayez une meilleure idée de ce qui se passe. Quelques bonnes explications, et comment modifier une requête [ici] (http://drupal.stackexchange.com/questions/11997/use-of-relationships-joins-in-views). Ils parlent de 'hook_views_pre_execute', mais il y a aussi' hook_views_post_execute' et 'hook_views_alter'. – mediaashley

+0

Merci pour l'info! Je vais jeter un coup d'oeil et faire un rapport. –