You are here

public function MetatagNormalizer::normalize in Metatag 8

1 call to MetatagNormalizer::normalize()
MetatagHalNormalizer::normalize in src/Normalizer/MetatagHalNormalizer.php
Normalizes an object into a set of arrays/scalars.
1 method overrides MetatagNormalizer::normalize()
MetatagHalNormalizer::normalize in src/Normalizer/MetatagHalNormalizer.php
Normalizes an object into a set of arrays/scalars.

File

src/Normalizer/MetatagNormalizer.php, line 20

Class

MetatagNormalizer
Normalizes metatag into the viewed entity.

Namespace

Drupal\metatag\Normalizer

Code

public function normalize($field_item, $format = NULL, array $context = []) {

  // @see metatag_get_tags_from_route()
  $entity = $field_item
    ->getEntity();
  $tags = metatag_get_tags_from_route($entity);
  $normalized['value'] = [];
  if (isset($tags['#attached']['html_head'])) {
    foreach ($tags['#attached']['html_head'] as $tag) {

      // @todo Work out a proper, long-term fix for this.
      if (isset($tag[0]['#attributes']['content'])) {
        $normalized['value'][$tag[1]] = $tag[0]['#attributes']['content'];
      }
      elseif (isset($tag[0]['#attributes']['href'])) {
        $normalized['value'][$tag[1]] = $tag[0]['#attributes']['href'];
      }
    }
  }
  if (isset($context['langcode'])) {
    $normalized['lang'] = $context['langcode'];
  }
  return $normalized;
}