Media API in Drupal

Drupal's Media API and custom source plugins provide a framework for defining and integrating new types of media sources, allowing for the extension and customization of how various media assets are managed and utilized within Drupal.

This course covers the fundamentals of media sources (Image, YouTube, PDF, etc.), how to create and configure new media types, and how to use oEmbed providers to embed external media content. Additionally, you will learn how to create custom media source plugins to integrate third-party media providers with Drupal.

Key topics

  • Understanding media sources
  • Creating and configuring new media types
  • Using oEmbed providers as media sources
  • Creating custom media source plugins
  • Integrating third-party media providers with Drupal
  • Mapping media source data to custom fields
  • Customizing media source plugins for specific use cases
Tutorials in this course
More information

Media source plugins provide the link between media entities in Drupal and the actual media asset itself. They are the code that understand the difference between an image, a video, and a Tweet, and perform the translation that allows the media ecosystem to treat all media entities equally. For example, local image files, and remote YouTube videos, can both be catalogued in a similar way as media entities, but they need very different handling when it comes to displaying them.

Media sources are represented as plugins, there are a handful in Drupal core, and a developer can add new plugins to represent any type of media your application needs to catalogue.

In this tutorial we'll learn:

  • How media source plugins relate to Media Types
  • The responsibilities of a media source plugin

By the end of this tutorial you should be able to define the role of a media source plugin and understand what's required to define your own.

More information

Drupal site administrators can create new media entity types, with their own unique configurations and sets of associated fields. Different media types can be configured with different field names, permissions, moderation workflows, and display settings, making it possible to create truly custom content administration experiences. The process is similar to creating a node content type like articles or events with one major distinction: every media type inherits from a specific media source plugin. The source plugin provides domain-specific knowledge about the kind of resource being represented. For example, the Remote video source plugin used with the default Remote video media type knows how to consume and display videos from YouTube and Vimeo given only their URL.

Drupal core comes with a couple of common media source plugins, and contributed modules and custom code can add to this list, increasing the different media providers with which Drupal can integrate.

In this tutorial we'll learn how to:

  • Install a contributed module that provides a new media source plugin.
  • Create a new media type.

By the end of this tutorial you should be able to explain how source plugins relate to media types, and create a new media type.

More information

If the Media assets you want to use in your library support oEmbed, then you might be able to use them with a minimal custom code. Before you go down the path of creating a custom media source plugin try this approach first.

oEmbed is a standard way of allowing third party sites to embed an asset represented by a URL. The Remote Video source in core uses the oEmbed features of YouTube and Vimeo. When you paste a link into a Slack channel and it displays a pretty card preview, or an embedded video or Spotify playlist, that's oEmbed in action. Does the Media you want to embed have a canonical URL? If so, paste it into the tool here and see if it displays oEmbed info in the results.

In this tutorial we'll:

  • Learn how to enable additional oEmbed providers as Media sources
  • Use the contributed oEmbed Providers module for compatible providers
  • Demonstrate how to create a custom oEmbed media source plugin to further customize the results

By the end of this tutorial you should be able to embed any oEmbed-compatible content as Media assets in Drupal.

More information

The Drupal Media Library and Media ecosystem can be integrated with any third-party media provider by defining new media source plugins. Media types (Media entity bundles) have an important distinction compared to other content entity types like nodes. Every media type inherits from a specific media source plugin. The source plugin provides domain-specific knowledge about the kind of resource being represented. For example, media types dealing with images know how to validate file extensions and render <img> tags. Media types dealing with remotely hosted videos might know how to retrieve thumbnails from a remote API, and display an HTML video player and transcript.

In this tutorial we'll learn how to:

  • Define a new source plugin
  • Integrate a third-party API via its existing PHP library

By the end of this tutorial you should be able to create a new source plugin that exposes any third-party media resources you want to integrate with Drupal.

This course appears in the following guides:
Site Administration
Learn to manage media and create responsive image styles.

Media and Responsive Images