You are here

function _custom_breadcrumbs_taxonomy_set_breadcrumb in Custom Breadcrumbs 6.2

Same name and namespace in other branches
  1. 7.2 custom_breadcrumbs_taxonomy/custom_breadcrumbs_taxonomy.inc \_custom_breadcrumbs_taxonomy_set_breadcrumb()

Sets the breadcrumb using a node's taxonomy.

Parameters

$tid: A taxonomy id.

$vid: A taxonomy vocabulary id.

$is_term_page: TRUE if the breadcrumb is being prepared for the taxonomy term page, FALSE otherwise.

$objs: An optional array of objects to be used for token replacement.

$terms: An array of taxonomy terms to use (potentially) to construct the breadcrumb.

4 calls to _custom_breadcrumbs_taxonomy_set_breadcrumb()
custom_breadcrumbs_panels_ctools_render_alter in custom_breadcrumbs_panels/custom_breadcrumbs_panels.module
Implements hook_ctools_render_alter().
custom_breadcrumbs_taxonomy_nodeapi in custom_breadcrumbs_taxonomy/custom_breadcrumbs_taxonomy.module
Implements hook_nodeapi().
custom_breadcrumbs_taxonomy_term_page in custom_breadcrumbs_taxonomy/custom_breadcrumbs_taxonomy.inc
Sets a taxonomy breadcrumb and calls the original taxonomy/term/% callback.
custom_breadcrumbs_taxonomy_views_pre_render in custom_breadcrumbs_taxonomy/custom_breadcrumbs_taxonomy.module
Implements hook_views_pre_render().

File

custom_breadcrumbs_taxonomy/custom_breadcrumbs_taxonomy.inc, line 60
Helper functions for custom_breadcrumbs_taxonomy.

Code

function _custom_breadcrumbs_taxonomy_set_breadcrumb($tid, $vid = NULL, $is_term_page = FALSE, $objs = array(), $terms = array()) {
  unset($_SESSION['custom_breadcrumbs_taxonomy_set']);
  if (variable_get('custom_breadcrumbs_taxonomy_use_hierarchy', TRUE) && !custom_breadcrumbs_exclude_path()) {
    $breadcrumb = custom_breadcrumbs_taxonomy_generate_breadcrumb($tid, $vid, $is_term_page, $objs);
    if ($is_term_page) {
      _custom_breadcrumbs_taxonomy_recent_term($tid);
    }
    if (variable_get('custom_breadcrumbs_taxonomy_include_node_title', FALSE) && isset($objs['node'])) {
      $breadcrumb[] = check_plain($objs['node']->title);
    }
    drupal_set_breadcrumb($breadcrumb);
    custom_breadcrumbs_taxonomy_set_session();

    // Optionally save the unique breadcrumb id of the last set breadcrumb.
    custom_breadcrumbs_unique_breadcrumb_id('taxonomy');
  }
  else {
    global $language;
    $languages = array(
      'language' => $language->language,
      'all' => '',
    );

    // Check each term to see if it has a custom breadcrumb.
    $vids = array();
    if (!empty($terms)) {
      foreach ($terms as $term) {
        $breadcrumbs = custom_breadcrumbs_load_breadcrumbs('custom_breadcrumbs_taxonomy', 'custom_breadcrumbs_taxonomy_term', array(
          'tid' => $term->tid,
        ), $languages);
        $objs['taxonomy'] = $term;
        if ($breadcrumb = custom_breadcrumbs_select_breadcrumb($breadcrumbs, $objs)) {
          if (custom_breadcrumbs_set_breadcrumb($breadcrumb, $objs)) {
            custom_breadcrumbs_taxonomy_set_session();
          }
          _custom_breadcrumbs_taxonomy_recent_term($term->tid);
          return;
        }
        if (!isset($vids[$term->vid])) {
          $vids[$term->vid] = $term;
        }
      }
    }
    if (empty($vids) && !is_null($vid)) {
      $vids[$vid] = NULL;
    }

    // No terms match, look for a match on the taxonomy vocabulary.
    foreach ($vids as $vid => $term) {
      $breadcrumbs = custom_breadcrumbs_load_breadcrumbs('custom_breadcrumbs_taxonomy', 'custom_breadcrumbs_taxonomy_vocabulary', array(
        'vid' => $vid,
      ), $languages);
      $objs['taxonomy'] = $term;
      if ($breadcrumb = custom_breadcrumbs_select_breadcrumb($breadcrumbs, $objs)) {
        if (custom_breadcrumbs_set_breadcrumb($breadcrumb, $objs)) {
          custom_breadcrumbs_taxonomy_set_session();
        }
        return;
      }
    }
  }
}