63 lines
1.5 KiB
PHP
63 lines
1.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Contains \Drupal\node\Controller\NodeViewController.
|
|
*/
|
|
|
|
namespace Drupal\node\Controller;
|
|
|
|
use Drupal\Component\Utility\SafeMarkup;
|
|
use Drupal\Core\Entity\EntityInterface;
|
|
use Drupal\Core\Entity\Controller\EntityViewController;
|
|
|
|
/**
|
|
* Defines a controller to render a single node.
|
|
*/
|
|
class NodeViewController extends EntityViewController {
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function view(EntityInterface $node, $view_mode = 'full', $langcode = NULL) {
|
|
$build = parent::view($node);
|
|
|
|
foreach ($node->uriRelationships() as $rel) {
|
|
// Set the node path as the canonical URL to prevent duplicate content.
|
|
$build['#attached']['html_head_link'][] = array(
|
|
array(
|
|
'rel' => $rel,
|
|
'href' => $node->url($rel),
|
|
),
|
|
TRUE,
|
|
);
|
|
|
|
if ($rel == 'canonical') {
|
|
// Set the non-aliased canonical path as a default shortlink.
|
|
$build['#attached']['html_head_link'][] = array(
|
|
array(
|
|
'rel' => 'shortlink',
|
|
'href' => $node->url($rel, array('alias' => TRUE)),
|
|
),
|
|
TRUE,
|
|
);
|
|
}
|
|
}
|
|
|
|
return $build;
|
|
}
|
|
|
|
/**
|
|
* The _title_callback for the page that renders a single node.
|
|
*
|
|
* @param \Drupal\Core\Entity\EntityInterface $node
|
|
* The current node.
|
|
*
|
|
* @return string
|
|
* The page title.
|
|
*/
|
|
public function title(EntityInterface $node) {
|
|
return SafeMarkup::checkPlain($this->entityManager->getTranslationFromContext($node)->label());
|
|
}
|
|
|
|
}
|