diff options
Diffstat (limited to 'core/modules/media/media.module')
-rw-r--r-- | core/modules/media/media.module | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/core/modules/media/media.module b/core/modules/media/media.module index 5079f0fa9a8..2de628b9c77 100644 --- a/core/modules/media/media.module +++ b/core/modules/media/media.module @@ -15,6 +15,7 @@ use Drupal\Core\Session\AccountInterface; use Drupal\Core\Template\Attribute; use Drupal\Core\Url; use Drupal\field\FieldConfigInterface; +use Drupal\media\Plugin\media\Source\OEmbedInterface; /** * Implements hook_help(). @@ -72,6 +73,11 @@ function media_theme() { 'render element' => 'element', 'base hook' => 'field_multiple_value_form', ], + 'media_oembed' => [ + 'variables' => [ + 'post' => NULL, + ], + ], ]; } @@ -92,6 +98,7 @@ function media_entity_access(EntityInterface $entity, $operation, AccountInterfa */ function media_theme_suggestions_media(array $variables) { $suggestions = []; + /** @var \Drupal\media\MediaInterface $media */ $media = $variables['elements']['#media']; $sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_'); @@ -99,6 +106,18 @@ function media_theme_suggestions_media(array $variables) { $suggestions[] = 'media__' . $media->bundle(); $suggestions[] = 'media__' . $media->bundle() . '__' . $sanitized_view_mode; + $source = $media->getSource(); + if ($source instanceof OEmbedInterface) { + $suggestions[] = 'media__oembed'; + + $provider_id = $source->getMetadata($media, 'provider_name'); + if ($provider_id) { + $provider_id = \Drupal::transliteration()->transliterate($provider_id); + $provider_id = preg_replace('/[^a-z0-9_]+/', '_', mb_strtolower($provider_id)); + $suggestions[] = "media__oembed__$provider_id"; + } + } + return $suggestions; } |