getExecutable(); } elseif (is_string($view)) { $view = Views::getView($view); } if (!$view instanceof ViewExecutable) { return; } $view->setDisplay($display_id); // And get the list of extenders for this display. $extenders = $view->getDisplay()->getExtenders(); if (!isset($extenders['metatag_display_extender'])) { // If the id of the plugin is not in the list then something is wrong. return; } // Retrieve the metatag settings from the extender. return $extenders['metatag_display_extender']->getMetatags(); } /** * Implements hook_metatags_alter(). */ function metatag_views_metatags_alter(&$metatags, $context) { if (!$context['entity'] instanceof ViewEntityInterface) { return; } $view = $context['entity']->getExecutable(); // If display_id is not available, will default to Master display. $display_id = \Drupal::routeMatch()->getParameter('display_id'); if ($tags = metatag_get_view_tags($view, $display_id)) { // Apply view overrides. $metatags = array_merge($metatags, $tags); } } /** * Implements hook_metatag_route_entity(). */ function metatag_views_metatag_route_entity(RouteMatchInterface $route_match) { if ($view_id = $route_match->getParameter('view_id')) { $entity = \Drupal::entityTypeManager()->getStorage('view')->load($view_id); return $entity; } }