1.20.x taxonomy.pages.inc | taxonomy_term_page(TaxonomyTerm $term) |
Menu callback; displays all nodes associated with a term.
Parameters
TaxonomyTerm $term: The taxonomy term entity.
File
- modules/
taxonomy/ taxonomy.pages.inc, line 14 - Page callbacks for the taxonomy module.
Code
function taxonomy_term_page(TaxonomyTerm $term) {
$site_config = config('system.core');
// If there is a menu link to this term, the link becomes the last part of
// the active trail, and the link name becomes the page title. Thus, we must
// explicitly set the page title to be the term title.
backdrop_set_title($term->name);
// Build breadcrumb based on the hierarchy of the term.
$current = (object) array(
'tid' => $term->tid,
);
// @todo This overrides any other possible breadcrumb and is a pure hard-coded
// presumption. Make this behavior configurable per vocabulary or term.
$breadcrumb = array();
while ($parents = taxonomy_term_load_parents($current->tid)) {
$current = array_shift($parents);
$breadcrumb[] = l($current->name, 'taxonomy/term/' . $current->tid);
}
$breadcrumb[] = l(t('Home'), NULL);
$breadcrumb = array_reverse($breadcrumb);
backdrop_set_breadcrumb($breadcrumb);
backdrop_add_feed('taxonomy/term/' . $term->tid . '/feed', 'RSS - ' . $term->name);
// Set the term path as the canonical URL to prevent duplicate content.
$uri = entity_uri('taxonomy_term', $term);
$canonical_secure = $site_config->get('canonical_secure') == 1 ? TRUE : FALSE;
$uri_options = array('absolute' => TRUE, 'https' => $canonical_secure);
backdrop_add_html_head_link(array('rel' => 'canonical', 'href' => url($uri['path'], array_merge($uri['options'], $uri_options))), TRUE);
// Normally we would call taxonomy_term_show() here, but for backwards
// compatibility in Drupal 7 we do not want to do that (it produces different
// data structures and HTML markup than what Drupal 7 released with). Calling
// taxonomy_term_view() directly provides essentially the same thing, but
// allows us to wrap the rendered term in our desired array structure.
$build['term_heading'] = array(
'#prefix' => '<div class="term-listing-heading">',
'#suffix' => '</div>',
'term' => taxonomy_term_view($term, 'full'),
);
if ($nids = taxonomy_select_nodes($term->tid, TRUE, $site_config->get('default_nodes_main'))) {
$nodes = node_load_multiple($nids);
$build += node_view_multiple($nodes);
$build['pager'] = array(
'#theme' => 'pager',
'#weight' => 5,
);
}
else {
$build['no_content'] = array(
'#prefix' => '<p>',
'#markup' => t('There is currently no content classified with this term.'),
'#suffix' => '</p>',
);
}
backdrop_alter('taxonomy_term_page', $build);
return $build;
}