81 lines
2.5 KiB
PHP
81 lines
2.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Page callbacks for the taxonomy module.
|
|
*/
|
|
|
|
use Drupal\taxonomy\Entity\Term;
|
|
|
|
/**
|
|
* Menu callback; displays all nodes associated with a term.
|
|
*
|
|
* @param \Drupal\taxonomy\Entity\Term $term
|
|
* The taxonomy term entity.
|
|
*
|
|
* @deprecated Use \Drupal\taxonomy\Controller\TaxonomyController::termPage()
|
|
*/
|
|
function taxonomy_term_page(Term $term) {
|
|
$build['#attached']['drupal_add_feed'][] = array('taxonomy/term/' . $term->id() . '/feed', 'RSS - ' . $term->label());
|
|
|
|
foreach ($term->uriRelationships() as $rel) {
|
|
$uri = $term->uri($rel);
|
|
// Set the term path as the canonical URL to prevent duplicate content.
|
|
$build['#attached']['drupal_add_html_head_link'][] = array(
|
|
array(
|
|
'rel' => $rel,
|
|
'href' => url($uri['path'], $uri['options']),
|
|
),
|
|
TRUE,
|
|
);
|
|
|
|
if ($rel == 'canonical') {
|
|
// Set the non-aliased canonical path as a default shortlink.
|
|
$build['#attached']['drupal_add_html_head_link'][] = array(
|
|
array(
|
|
'rel' => 'shortlink',
|
|
'href' => url($uri['path'], array_merge($uri['options'], array('alias' => TRUE))),
|
|
),
|
|
TRUE,
|
|
);
|
|
}
|
|
}
|
|
|
|
$build['taxonomy_terms'] = taxonomy_term_view_multiple(array($term->id() => $term));
|
|
if ($nids = taxonomy_select_nodes($term->id(), TRUE, \Drupal::config('node.settings')->get('items_per_page'))) {
|
|
$nodes = node_load_multiple($nids);
|
|
$build['nodes'] = 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>',
|
|
);
|
|
}
|
|
return $build;
|
|
}
|
|
|
|
/**
|
|
* Generate the content feed for a taxonomy term.
|
|
*
|
|
* @param \Drupal\taxonomy\Entity\Term $term
|
|
* The taxonomy term entity.
|
|
*
|
|
* @deprecated Use \Drupal\taxonomy\Controller\TaxonomyController::termFeed()
|
|
*/
|
|
function taxonomy_term_feed(Term $term) {
|
|
$channel['link'] = url('taxonomy/term/' . $term->id(), array('absolute' => TRUE));
|
|
$channel['title'] = \Drupal::config('system.site')->get('name') . ' - ' . $term->label();
|
|
// Only display the description if we have a single term, to avoid clutter and confusion.
|
|
// HTML will be removed from feed description.
|
|
$channel['description'] = $term->description->processed;
|
|
$nids = taxonomy_select_nodes($term->id(), FALSE, \Drupal::config('system.rss')->get('items.limit'));
|
|
|
|
return node_feed($nids, $channel);
|
|
}
|