function _custom_breadcrumbs_taxonomy_set_breadcrumb in Custom Breadcrumbs 6.2
Same name and namespace in other branches
- 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;
}
}
}
}