I've encountered a persistent problem with views that use the "Content: Has taxonomy term ID" contextual filter. The views break with the following errors:

    Notice: Undefined property: view::$view in views_plugin_argument_default_taxonomy_tid->get_argument() (line 147 of /home/user/public_html/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc).
    Notice: Trying to get property of non-object in views_plugin_argument_default_taxonomy_tid->get_argument() (line 147 of /home/user/public_html/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc).
    Notice: Trying to get property of non-object in views_plugin_argument_default_taxonomy_tid->get_argument() (line 147 of /home/user/public_html/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc).

I've been able to use the attached patch to fix the problem in the past few versions; apologies for not submitting this patch earlier!

Below is an export of one of the views that triggers this problem; the problem is with the "Blog Post By Topic Page" display.

$view = new view;
$view->name = 'blog';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Blog';
$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'] = 'Blog';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['hide_empty'] = 0;
$handler->display->display_options['row_options']['default_field_elements'] = 1;
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0;
$handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['title']['alter']['trim'] = 0;
$handler->display->display_options['fields']['title']['alter']['html'] = 0;
$handler->display->display_options['fields']['title']['hide_empty'] = 0;
$handler->display->display_options['fields']['title']['empty_zero'] = 0;
$handler->display->display_options['fields']['title']['link_to_node'] = 1;
/* Field: Content: Body */
$handler->display->display_options['fields']['body']['id'] = 'body';
$handler->display->display_options['fields']['body']['table'] = 'field_data_body';
$handler->display->display_options['fields']['body']['field'] = 'body';
$handler->display->display_options['fields']['body']['label'] = '';
$handler->display->display_options['fields']['body']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['body']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['body']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['body']['alter']['external'] = 0;
$handler->display->display_options['fields']['body']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['body']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['body']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['body']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['body']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['body']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['body']['alter']['trim'] = 0;
$handler->display->display_options['fields']['body']['alter']['html'] = 0;
$handler->display->display_options['fields']['body']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['body']['element_default_classes'] = 1;
$handler->display->display_options['fields']['body']['hide_empty'] = 0;
$handler->display->display_options['fields']['body']['empty_zero'] = 0;
$handler->display->display_options['fields']['body']['type'] = 'text_summary_or_trimmed';
$handler->display->display_options['fields']['body']['settings'] = array(
  'trim_length' => '600',
);
$handler->display->display_options['fields']['body']['field_api_classes'] = 0;
/* Field: Content: Link */
$handler->display->display_options['fields']['view_node']['id'] = 'view_node';
$handler->display->display_options['fields']['view_node']['table'] = 'node';
$handler->display->display_options['fields']['view_node']['field'] = 'view_node';
$handler->display->display_options['fields']['view_node']['label'] = '';
$handler->display->display_options['fields']['view_node']['alter']['alter_text'] = 1;
$handler->display->display_options['fields']['view_node']['alter']['text'] = 'Read More';
$handler->display->display_options['fields']['view_node']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['external'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['view_node']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['view_node']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['trim'] = 0;
$handler->display->display_options['fields']['view_node']['alter']['html'] = 0;
$handler->display->display_options['fields']['view_node']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['view_node']['element_default_classes'] = 1;
$handler->display->display_options['fields']['view_node']['hide_empty'] = 0;
$handler->display->display_options['fields']['view_node']['empty_zero'] = 0;
$handler->display->display_options['fields']['view_node']['hide_alter_empty'] = 0;
/* Field: Content: Topics */
$handler->display->display_options['fields']['field_topic']['id'] = 'field_topic';
$handler->display->display_options['fields']['field_topic']['table'] = 'field_data_field_topic';
$handler->display->display_options['fields']['field_topic']['field'] = 'field_topic';
$handler->display->display_options['fields']['field_topic']['label'] = '';
$handler->display->display_options['fields']['field_topic']['exclude'] = TRUE;
$handler->display->display_options['fields']['field_topic']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['external'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['field_topic']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['field_topic']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['trim'] = 0;
$handler->display->display_options['fields']['field_topic']['alter']['html'] = 0;
$handler->display->display_options['fields']['field_topic']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_topic']['element_default_classes'] = 1;
$handler->display->display_options['fields']['field_topic']['hide_empty'] = 0;
$handler->display->display_options['fields']['field_topic']['empty_zero'] = 0;
$handler->display->display_options['fields']['field_topic']['hide_alter_empty'] = 0;
$handler->display->display_options['fields']['field_topic']['field_api_classes'] = 0;
/* Sort criterion: Content: 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';
$handler->display->display_options['sorts']['created']['granularity'] = 'minute';
/* Contextual filter: Content: Topics (field_topic) */
$handler->display->display_options['arguments']['field_topic_tid']['id'] = 'field_topic_tid';
$handler->display->display_options['arguments']['field_topic_tid']['table'] = 'field_data_field_topic';
$handler->display->display_options['arguments']['field_topic_tid']['field'] = 'field_topic_tid';
$handler->display->display_options['arguments']['field_topic_tid']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['field_topic_tid']['summary']['format'] = 'default_summary';
/* Filter criterion: Content: 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;
$handler->display->display_options['filters']['status']['group'] = 0;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Content: 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(
  'blog' => 'blog',
);

/* Display: Blog Posts by Month Block */
$handler = $view->new_display('block', 'Blog Posts by Month Block', 'block_1');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'Blog Archive';
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['pager']['options']['items_per_page'] = '3';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Content: Updated year + month */
$handler->display->display_options['arguments']['changed_year_month']['id'] = 'changed_year_month';
$handler->display->display_options['arguments']['changed_year_month']['table'] = 'node';
$handler->display->display_options['arguments']['changed_year_month']['field'] = 'changed_year_month';
$handler->display->display_options['arguments']['changed_year_month']['default_action'] = 'summary';
$handler->display->display_options['arguments']['changed_year_month']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['changed_year_month']['default_argument_skip_url'] = 0;
$handler->display->display_options['arguments']['changed_year_month']['summary']['sort_order'] = 'desc';
$handler->display->display_options['arguments']['changed_year_month']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['changed_year_month']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['changed_year_month']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['changed_year_month']['specify_validation'] = 1;

/* Display: Blog posts by month page */
$handler = $view->new_display('page', 'Blog posts by month page', 'page_1');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'Blog posts by month';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'node';
$handler->display->display_options['row_options']['links'] = 1;
$handler->display->display_options['row_options']['comments'] = 0;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Content: Updated year + month */
$handler->display->display_options['arguments']['changed_year_month']['id'] = 'changed_year_month';
$handler->display->display_options['arguments']['changed_year_month']['table'] = 'node';
$handler->display->display_options['arguments']['changed_year_month']['field'] = 'changed_year_month';
$handler->display->display_options['arguments']['changed_year_month']['default_action'] = 'summary';
$handler->display->display_options['arguments']['changed_year_month']['title_enable'] = 1;
$handler->display->display_options['arguments']['changed_year_month']['title'] = 'Blog: %1';
$handler->display->display_options['arguments']['changed_year_month']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['changed_year_month']['default_argument_skip_url'] = 0;
$handler->display->display_options['arguments']['changed_year_month']['summary']['sort_order'] = 'desc';
$handler->display->display_options['arguments']['changed_year_month']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['changed_year_month']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['changed_year_month']['summary_options']['base_path'] = 'blog/archive';
$handler->display->display_options['arguments']['changed_year_month']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['changed_year_month']['specify_validation'] = 1;
$handler->display->display_options['path'] = 'blog/archive/%';

/* Display: Blog post by topic block */
$handler = $view->new_display('block', 'Blog post by topic block', 'block');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'Blog posts by topic';
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'node';
$handler->display->display_options['row_options']['links'] = 0;
$handler->display->display_options['row_options']['comments'] = 0;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['relationships'] = FALSE;
/* Relationship: Content: Taxonomy terms on node */
$handler->display->display_options['relationships']['term_node_tid']['id'] = 'term_node_tid';
$handler->display->display_options['relationships']['term_node_tid']['table'] = 'node';
$handler->display->display_options['relationships']['term_node_tid']['field'] = 'term_node_tid';
$handler->display->display_options['defaults']['sorts'] = FALSE;
/* Sort criterion: Content: 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';
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Content: Has taxonomy term ID */
$handler->display->display_options['arguments']['tid']['id'] = 'tid';
$handler->display->display_options['arguments']['tid']['table'] = 'taxonomy_index';
$handler->display->display_options['arguments']['tid']['field'] = 'tid';
$handler->display->display_options['arguments']['tid']['default_action'] = 'summary';
$handler->display->display_options['arguments']['tid']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['tid']['default_argument_skip_url'] = 0;
$handler->display->display_options['arguments']['tid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['tid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['tid']['summary_options']['base_path'] = 'blog/topic';
$handler->display->display_options['arguments']['tid']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['tid']['break_phrase'] = 0;
$handler->display->display_options['arguments']['tid']['add_table'] = 0;
$handler->display->display_options['arguments']['tid']['require_value'] = 0;
$handler->display->display_options['arguments']['tid']['reduce_duplicates'] = 0;
$handler->display->display_options['arguments']['tid']['set_breadcrumb'] = 0;
$handler->display->display_options['defaults']['filters'] = FALSE;
/* Filter criterion: Content: 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;
$handler->display->display_options['filters']['status']['group'] = 0;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Content: 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(
  'blog' => 'blog',
);
/* Filter criterion: Taxonomy term: Vocabulary */
$handler->display->display_options['filters']['vid']['id'] = 'vid';
$handler->display->display_options['filters']['vid']['table'] = 'taxonomy_term_data';
$handler->display->display_options['filters']['vid']['field'] = 'vid';
$handler->display->display_options['filters']['vid']['relationship'] = 'term_node_tid';
$handler->display->display_options['filters']['vid']['value'] = array(
  3 => '3',
);

/* Display: Blog Post By Topic Page */
$handler = $view->new_display('page', 'Blog Post By Topic Page', 'page');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'Blog posts by topic';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'node';
$handler->display->display_options['row_options']['links'] = 1;
$handler->display->display_options['row_options']['comments'] = 0;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Content: Has taxonomy term ID */
$handler->display->display_options['arguments']['tid']['id'] = 'tid';
$handler->display->display_options['arguments']['tid']['table'] = 'taxonomy_index';
$handler->display->display_options['arguments']['tid']['field'] = 'tid';
$handler->display->display_options['arguments']['tid']['default_action'] = 'summary';
$handler->display->display_options['arguments']['tid']['title_enable'] = 1;
$handler->display->display_options['arguments']['tid']['title'] = 'Blog: %1';
$handler->display->display_options['arguments']['tid']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['tid']['default_argument_skip_url'] = 0;
$handler->display->display_options['arguments']['tid']['summary']['number_of_records'] = '1';
$handler->display->display_options['arguments']['tid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['tid']['summary_options']['base_path'] = 'blog/topic';
$handler->display->display_options['arguments']['tid']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['tid']['specify_validation'] = 1;
$handler->display->display_options['arguments']['tid']['break_phrase'] = 0;
$handler->display->display_options['arguments']['tid']['add_table'] = 0;
$handler->display->display_options['arguments']['tid']['require_value'] = 0;
$handler->display->display_options['arguments']['tid']['reduce_duplicates'] = 0;
$handler->display->display_options['arguments']['tid']['set_breadcrumb'] = 0;
$handler->display->display_options['path'] = 'blog/topic/%';

/* Display: Blog Posts */
$handler = $view->new_display('page', 'Blog Posts', 'page_2');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'Blog';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'node';
$handler->display->display_options['row_options']['links'] = 1;
$handler->display->display_options['row_options']['comments'] = 0;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['arguments'] = FALSE;
$handler->display->display_options['path'] = 'blog';
$handler->display->display_options['menu']['type'] = 'normal';
$handler->display->display_options['menu']['title'] = 'Blog';
$handler->display->display_options['menu']['weight'] = '0';
$handler->display->display_options['menu']['name'] = 'main-menu';
CommentFileSizeAuthor
views-taxonomy-tid.patch789 bytesjackalope
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

dawehner’s picture

Status: Active » Closed (duplicate)

Thanks for reporting it and making a patch.

"Sadly" this is already fixed with #1230306: Block view with tid contextual filter doesn't inherit the page view's argument so it's availible in the current DEV version already.

jackalope’s picture

Status: Closed (duplicate) » Active

Hi dereine – I created the patch against the most recent dev version on September 27; the problem was still happening with that version. I just tested with today's dev version and the problem still exists; here is the problem code that still exists in views_plugin_argument_default_taxonomy_tid.inc:

    // If the current page is a view that takes tid as an argument,
    // find the tid argument and return it.
    $views_page = views_get_page_view();
    if ($views_page && isset($views_page->argument['tid'])) {
      return $views_page->view->argument['tid']->argument;
    }
  }
}

My patch still applies cleanly to the newest dev version and fixes this problem; it changes the " $views_page->view->argument['tid']->argument;" to "$views_page->argument['tid']->argument;".

I think the other issue & patch were solving a different problem.

dawehner’s picture

Status: Active » Fixed

Oh i see, ... the problem was that the patch didn't applied via patch -p1 or patch -p0 so i thought the patch was already applied.

Thanks! Just commited to 7.x-3.x

jackalope’s picture

Ah! Sorry about that; I'm using the patch creation method described here but maybe that's not best? Glad the patch works, thanks for committing it!

dawehner’s picture

Well you should probably check out views as an extra git clone to make patches against it.
Then use this patches in your main project.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.