warning: Illegal offset type in isset or empty in /var/www/modules/taxonomy/taxonomy.module on line 1090, 1091 and 1094.

The taxonomy_get_term() function takes an ID for the first parameter ($tid). Currently we are getting an object passed back to it. It is a ctools_context object. I talked with merlinofchaos in #1810440: Incorrect data sent to taxonomy_get_term() and it turns out that page_manager does some things that end up making the $menu_item['map'][2] value equal the object instead of the expected id.

Although, this error is not because of page_title or page_manager but yet the combination of having them both installed. I would like to suggest a patch to the page_title module.

The patch would be very simple. If we take the following two functions 'taxonomy_page_title_alter' and 'taxonomy_page_title_pattern_alter' from the taxonomy.page_title.inc file and wrap an if statement around the current if statement in each function we could support people who use these modules in conjunction with each other.

Current Functions

<?php

/**
 * Implementation of hook_page_title_alter().
 */
function taxonomy_page_title_alter(&$title) {
  $menu_item = menu_get_item();

  // NOTE: We user $menu_item['map'] here instead of $menu_item['page_arguments']
  //       as Views can interrupt the path ad moves the argument value from 0 to 2.
  //       See issue: /node/1203768

  // If we're looking at a taxonomy term page, get the term title
  if ( !strncmp($menu_item['path'], 'taxonomy/term/%', 15) &&
       ($term = taxonomy_get_term($menu_item['map'][2])) &&
       variable_get('page_title_vocab_'. $term->vid .'_showfield', 0) &&
       ($term_title = page_title_load_title($term->tid, 'term')) ) {
    $title = $term_title;
  }
}

/**
 * Implementation of hook_page_title_pattern_alter().
 */
function taxonomy_page_title_pattern_alter(&$pattern, &$types) {
  $menu_item = menu_get_item();

  // NOTE: We user $menu_item['map'] here instead of $menu_item['page_arguments']
  //       as Views can interrupt the path ad moves the argument value from 0 to 2.
  //       See issue: /node/1203768

  // Taxonomy Term Page
  if ( !strncmp($menu_item['path'], 'taxonomy/term/%', 15) &&
       ($term = taxonomy_get_term($menu_item['map'][2])) ) {
    $types['taxonomy'] = $term;
    $pattern = variable_get('page_title_vocab_'. $types['taxonomy']->vid, '');
  }
}

?>

Modified Functions (with proposed solution from above)

<?php

/**
 * Implementation of hook_page_title_alter().
 */
function taxonomy_page_title_alter(&$title) {
  $menu_item = menu_get_item();

  // NOTE: We user $menu_item['map'] here instead of $menu_item['page_arguments']
  //       as Views can interrupt the path ad moves the argument value from 0 to 2.
  //       See issue: /node/1203768

  if (is_numeric($menu_item['map'][2])) {
    // If we're looking at a taxonomy term page, get the term title
    if ( !strncmp($menu_item['path'], 'taxonomy/term/%', 15) &&
         ($term = taxonomy_get_term($menu_item['map'][2])) &&
         variable_get('page_title_vocab_'. $term->vid .'_showfield', 0) &&
         ($term_title = page_title_load_title($term->tid, 'term')) ) {
      $title = $term_title;
    }
  }
}

/**
 * Implementation of hook_page_title_pattern_alter().
 */
function taxonomy_page_title_pattern_alter(&$pattern, &$types) {
  $menu_item = menu_get_item();

  // NOTE: We user $menu_item['map'] here instead of $menu_item['page_arguments']
  //       as Views can interrupt the path ad moves the argument value from 0 to 2.
  //       See issue: /node/1203768

  if (is_numeric($menu_item['map'][2])) {
    // Taxonomy Term Page
    if ( !strncmp($menu_item['path'], 'taxonomy/term/%', 15) &&
         ($term = taxonomy_get_term($menu_item['map'][2])) ) {
      $types['taxonomy'] = $term;
      $pattern = variable_get('page_title_vocab_'. $types['taxonomy']->vid, '');
    }  
  }
}

?>
Files: 

Comments

FatGuyLaughing’s picture

Status:Active» Needs review
StatusFileSize
new2.07 KB