You are here

function _taxonomy_breadcrumb_generate_breadcrumb in Taxonomy Breadcrumb 7

Same name and namespace in other branches
  1. 6 taxonomy_breadcrumb.inc \_taxonomy_breadcrumb_generate_breadcrumb()

If the current drupal path (q=) is /node/nid, generate the breadcrumb trail based on nid.

2 calls to _taxonomy_breadcrumb_generate_breadcrumb()
taxonomy_breadcrumb_node_view in ./taxonomy_breadcrumb.module
Implements hook_node_view().
taxonomy_breadcrumb_page_alter in ./taxonomy_breadcrumb.module
Implements hook_page_alter().

File

./taxonomy_breadcrumb.inc, line 83
helper functions for taxonomy_breadcrumb

Code

function _taxonomy_breadcrumb_generate_breadcrumb($tid, $is_term_page = FALSE) {
  $term = taxonomy_term_load($tid);

  // Generate the HOME breadcrumb.
  $home_text = variable_get('taxonomy_breadcrumb_home', t('Home'));
  if ($home_text != '') {
    $breadcrumb[] = l($home_text, NULL);
  }

  // Generate the VOCABULARY breadcrumb.
  $vocabulary_path = _taxonomy_breadcrumb_get_vocabulary_path($term->vid);
  if ($vocabulary_path != NULL) {
    $vocabulary = taxonomy_vocabulary_load($term->vid);
    $breadcrumb[] = l(_taxonomy_breadcrumb_tt("taxonomy:vocabulary:{$term->tid}:name", $vocabulary->name), $vocabulary_path);
  }

  // Generate the TERM breadcrumb.
  $parent_terms = array_reverse(taxonomy_get_parents_all($tid));
  foreach ($parent_terms as $parent_term) {
    $term_path = _taxonomy_breadcrumb_get_term_path($parent_term->tid);
    if ($term_path == NULL) {
      $uri = taxonomy_term_uri($parent_term);
      $term_path = $uri['path'];
    }
    if ($term_path == '<none>') {
      continue;
    }
    $term_title = $parent_term->name;

    // Use the SYNONYM instead of TERM, if we want to.
    // if (variable_get('taxonomy_breadcrumb_use_synonym', FALSE)) {
    // TODO The taxonomy synonym functionality has been removed.
    // TODO Is there a way to do this?
    //  $synonyms = array() /*taxonomy_get_synonyms($parent_term->tid)*/;
    //  if (!empty($synonyms)) {
    //    $term_title = $synonyms[0];
    //  }
    // }
    // Do not create links to own self if we are on a taxonomy/term page.
    if ($is_term_page && $parent_term->tid == $tid) {
      $breadcrumb[] = check_plain(_taxonomy_breadcrumb_tt("taxonomy:term:{$parent_term->tid}:name", $term_title));
    }
    else {
      $breadcrumb[] = l(_taxonomy_breadcrumb_tt("taxonomy:term:{$parent_term->tid}:name", $term_title), $term_path);
    }
  }

  // Remove the breadcrumb for the term currently being viewed.
  if (!is_null($breadcrumb) && $is_term_page) {
    array_pop($breadcrumb);
  }
  return $breadcrumb;
}