content_translation_page_attachments

content_translation_page_attachments(&$page)

Implements hook_page_attachments().

File

core/modules/content_translation/content_translation.module, line 560
Allows entities to be translated into different languages.

Code

function content_translation_page_attachments(&$page) {
  $route_match = \Drupal::routeMatch();

  // If the current route has no parameters, return.
  if (!($route = $route_match->getRouteObject()) || !($parameters = $route->getOption('parameters'))) {
    return;
  }

  // Determine if the current route represents an entity.
  foreach ($parameters as $name => $options) {
    if (!isset($options['type']) || strpos($options['type'], 'entity:') !== 0) {
      continue;
    }

    $entity = $route_match->getParameter($name);
    if ($entity instanceof ContentEntityInterface) {
      // Current route represents a content entity. Build hreflang links.
      foreach ($entity->getTranslationLanguages() as $language) {
        $url = $entity->urlInfo()
          ->setOption('language', $language)
          ->setAbsolute()
          ->toString();
        $page['#attached']['html_head_link'][] = array(
          array(
            'rel' => 'alternate',
            'hreflang' => $language->getId(),
            'href' => $url,
          ),
          TRUE,
        );
      }
    }
    // Since entity was found, no need to iterate further.
    return;
  }
}
doc_Drupal
2016-10-29 08:58:40
Comments
Leave a Comment

Please login to continue.