The NAT: nid argument does not specify a revision ID when associating the term_node table. Because of this, the argument will generate a duplicate entry for every revision of a node that included the term.
While I can see that this might be useful under certain cases, I cannot figure out how to configure the view to only list current node revisions. Has anyone else worked around this case before?
Using view:
<?php
$view = new view;
$view->name = 'pavilion_articles';
$view->description = 'List of articles from a pavilion node';
$view->tag = 'Pavilions';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$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['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['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'node';
$handler->display->display_options['row_options']['links'] = 1;
$handler->display->display_options['row_options']['comments'] = 0;
/* Sort criterion: Node: Post date */
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'node';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
/* Argument: NAT: Nid */
$handler->display->display_options['arguments']['nid_1']['id'] = 'nid_1';
$handler->display->display_options['arguments']['nid_1']['table'] = 'nat';
$handler->display->display_options['arguments']['nid_1']['field'] = 'nid';
$handler->display->display_options['arguments']['nid_1']['default_action'] = 'default';
$handler->display->display_options['arguments']['nid_1']['style_plugin'] = 'default_summary';
$handler->display->display_options['arguments']['nid_1']['default_argument_type'] = 'node';
$handler->display->display_options['arguments']['nid_1']['validate_type'] = 'node';
$handler->display->display_options['arguments']['nid_1']['validate_options']['types'] = array(
'pavilion' => 'pavilion',
);
$handler->display->display_options['arguments']['nid_1']['validate_options']['access'] = 1;
$handler->display->display_options['arguments']['nid_1']['break_phrase'] = 0;
$handler->display->display_options['arguments']['nid_1']['not'] = 0;
/* Filter: Node: Published */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = '1';
/* Filter: Node: Type */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
'article' => 'article',
);
/* Display: Content pane */
$handler = $view->new_display('panel_pane', 'Content pane', 'panel_pane_1');
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Argument: NAT: Nid */
$handler->display->display_options['arguments']['nid_1']['id'] = 'nid_1';
$handler->display->display_options['arguments']['nid_1']['table'] = 'nat';
$handler->display->display_options['arguments']['nid_1']['field'] = 'nid';
$handler->display->display_options['arguments']['nid_1']['default_action'] = 'default';
$handler->display->display_options['arguments']['nid_1']['style_plugin'] = 'default_summary';
$handler->display->display_options['arguments']['nid_1']['default_argument_type'] = 'node';
$handler->display->display_options['arguments']['nid_1']['validate_type'] = 'node';
$handler->display->display_options['arguments']['nid_1']['validate_options']['types'] = array(
'pavilion' => 'pavilion',
);
$handler->display->display_options['arguments']['nid_1']['validate_options']['access'] = 1;
$handler->display->display_options['arguments']['nid_1']['break_phrase'] = 0;
$handler->display->display_options['arguments']['nid_1']['not'] = 0;
$handler->display->display_options['pane_category']['name'] = 'Pavilions';
$handler->display->display_options['pane_category']['weight'] = '0';
$handler->display->display_options['argument_input'] = array(
'nid_1' => array(
'type' => 'context',
'context' => 'node.nid',
'context_optional' => 0,
'panel' => '0',
'fixed' => '',
'label' => 'NAT: Nid',
),
);
$translatables['pavilion_articles'] = 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('All'),
t('Content pane'),
t('Pavilions'),
);
?>
Comments
Comment #1
BrockBoland commentedThis is definitely a bug. Using NAT:Nid as an argument for a view, and this is the generated SQL:
This should be:
The offending code is in
includes/nat.views.incinnat_views_data().I'm not sure how to define two fields for each table to match on, but the attached patch changes
nidtovidso it matches on the node version. Now, this probably isn't the right way to do it, but it's one way.Comment #2
Melissamcewen commentedsubscribe
Comment #3
BrockBoland commentedI just ran into this problem again today. Can anyone review the patch in #1 and see if it's an acceptable solution?
Comment #4
5kot commentedI had this exact issue. I've applied that patch and it works fine.
S