You are here

function metatag_get_tags_from_route in Metatag 8

Load the meta tags by processing the route parameters.

Return value

mixed Array of meta tags or NULL.

5 calls to metatag_get_tags_from_route()
MetatagNormalizer::normalize in src/Normalizer/MetatagNormalizer.php
Normalizes an object into a set of arrays/scalars.
metatag_generate_entity_metatags in ./metatag.module
Turn the meta tags for an entity into a human readable structure.
metatag_page_attachments in ./metatag.module
Implements hook_page_attachments().
metatag_preprocess_html in ./metatag.module
Implements template_preprocess_html().
_metatag_remove_duplicate_entity_tags in ./metatag.module
Remove duplicate entity tags from a build.

File

./metatag.module, line 490
Contains metatag.module.

Code

function metatag_get_tags_from_route($entity = NULL) {
  $metatag_manager = \Drupal::service('metatag.manager');

  // First, get defaults.
  $metatags = metatag_get_default_tags($entity);
  if (!$metatags) {
    return NULL;
  }

  // Then, set tag overrides for this particular entity.
  if (!$entity) {
    $entity = metatag_get_route_entity();
  }
  if (!empty($entity) && $entity instanceof ContentEntityInterface) {

    // If content entity does not have an ID the page is likely an "Add" page,
    // so do not generate meta tags for entity which has not been created yet.
    if (!$entity
      ->id()) {
      return NULL;
    }
    foreach ($metatag_manager
      ->tagsFromEntity($entity) as $tag => $data) {
      $metatags[$tag] = $data;
    }
  }

  // Trigger hook_metatags_alter().
  // Allow modules to override tags or the entity used for token replacements.
  $context = [
    'entity' => &$entity,
  ];
  \Drupal::service('module_handler')
    ->alter('metatags', $metatags, $context);

  // If the entity was changed above, use that for generating the meta tags.
  if (isset($context['entity'])) {
    $entity = $context['entity'];
  }
  return $metatag_manager
    ->generateElements($metatags, $entity);
}