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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
2025-01-10 15:47:30
Comments
Leave a Comment

Please login to continue.