Media Types
Purpose: Create custom media source plugins to integrate third-party services (APIs, platforms), extend oEmbed sources, manage metadata attributes, map fields, generate thumbnails, and configure display/form widgets.
I Need To...
| I need to... | Guide | Summary |
|---|---|---|
| Decide between core/contrib/custom media types | Media Type Selection Strategy | Starting a media integration project and deciding whether to use core media types, contrib modules, or build a custom media source plugin. |
| Choose the right base class for a custom plugin | Base Class Selection | Building a custom media source plugin and choosing which base class to extend (MediaSourceBase, File, or OEmbed). |
| Understand the media source architecture | Architecture Overview | Understanding how media source plugins fit into Drupal's entity and plugin systems before implementing custom functionality. |
| Create a custom API integration plugin | Custom Media Source Plugin | Integrating a third-party API or custom service that doesn't support oEmbed and no contrib module exists. |
| Extend oEmbed for Instagram/Twitter/TikTok | Extending OEmbed Sources | Service supports oEmbed protocol but needs custom URL validation, additional metadata extraction, or provider-specific handling. |
| Extract and provide metadata attributes | Metadata System | Defining what information a media source can provide and implementing the extraction logic. |
| Map metadata to entity fields | Field Mapping | Making metadata searchable, filterable in views, or editable by site builders through the field mapping UI. |
| Generate and cache thumbnails | Thumbnail Generation | Providing thumbnails for Media Library display and media entity views. |
| Inject services (HTTP client, logger, cache) | Dependency Injection | Media source plugin needs services like HTTP client, logger, cache, file system, or custom services. |
| Validate source field values | Validation Constraints | Validating source field values before saving media entities (URL patterns, API connectivity, file types). |
| Configure display and form widgets | Display Configuration | Customizing how media source fields are displayed in views and edited in forms when media type is created. |
| Apply security best practices | Security Best Practices | Every media source plugin must implement security measures to prevent common vulnerabilities. |
| Optimize performance and caching | Performance Optimization | Media source plugin causes slow page loads, high API usage, or database performance issues. |
| Test media source plugins | Testing Strategies | Ensuring media source plugin works correctly across different scenarios and preventing regressions. |
| Avoid common mistakes | Anti-Patterns | Avoiding common mistakes that lead to maintenance problems, security issues, or performance degradation. |