You are here

function metatag_get_default_tags in Metatag 8

Returns default tags for the current route.

Return value

mixed Array of tags or NULL;

6 calls to metatag_get_default_tags()
MetatagConfigTranslationTest::testConfigTranslations in tests/src/Functional/MetatagConfigTranslationTest.php
Confirm the global configs are translatable page.
MetatagFieldItem::preSave in src/Plugin/Field/FieldType/MetatagFieldItem.php
Defines custom presave behavior for field values.
MetatagFirehose::formElement in src/Plugin/Field/FieldWidget/MetatagFirehose.php
Returns the form for a single field widget.
metatag_get_tags_from_route in ./metatag.module
Load the meta tags by processing the route parameters.
metatag_page_manager_page_attachments in metatag_page_manager/metatag_page_manager.module
Implements hook_page_attachments().

... See full list

File

./metatag.module, line 537
Contains metatag.module.

Code

function metatag_get_default_tags($entity = NULL) {

  /** @var \Drupal\Core\Entity\EntityStorageInterface $global_metatag_manager */
  $global_metatag_manager = \Drupal::entityTypeManager()
    ->getStorage('metatag_defaults');

  /** @var \Drupal\metatag\MetatagManager $metatag_manager */
  $metatag_manager = \Drupal::service('metatag.manager');

  // Load config based on language.
  $current_language = NULL;
  if ($entity !== NULL) {

    /** @var \Drupal\Core\Language\LanguageManagerInterface $language_manager */
    $language_manager = \Drupal::languageManager();
    $current_language = $language_manager
      ->getConfigOverrideLanguage();
    $language_manager
      ->setConfigOverrideLanguage($entity
      ->language());
  }

  // First we load global defaults.
  $metatags = $metatag_manager
    ->getGlobalMetatags();
  if (!$metatags) {
    if ($current_language) {
      $language_manager
        ->setConfigOverrideLanguage($current_language);
    }
    return NULL;
  }

  // Check if this is a special page.
  $special_metatags = $metatag_manager
    ->getSpecialMetatags();
  if (isset($special_metatags)) {
    $metatags
      ->overwriteTags($special_metatags
      ->get('tags'));
  }
  else {
    if (!$entity) {
      $entity = metatag_get_route_entity();
    }
    if (!empty($entity) && $entity instanceof ContentEntityInterface) {

      /** @var \Drupal\metatag\Entity\MetatagDefaults|null $entity_metatags */
      $entity_metatags = $global_metatag_manager
        ->load($entity
        ->getEntityTypeId());
      if ($entity_metatags != NULL && $entity_metatags
        ->status()) {

        // Merge with global defaults.
        $metatags
          ->overwriteTags($entity_metatags
          ->get('tags'));
      }

      // Finally, check if bundle overrides should be added.

      /** @var \Drupal\metatag\Entity\MetatagDefaults|null $bundle_metatags */
      $bundle_metatags = $global_metatag_manager
        ->load($entity
        ->getEntityTypeId() . '__' . $entity
        ->bundle());
      if ($bundle_metatags != NULL && $bundle_metatags
        ->status()) {

        // Merge with existing defaults.
        $metatags
          ->overwriteTags($bundle_metatags
          ->get('tags'));
      }
    }
  }
  $tags = $metatags
    ->get('tags');
  if ($current_language) {
    $language_manager
      ->setConfigOverrideLanguage($current_language);
  }
  return $tags;
}