D7 Media
Proporciona un marco completo de gestión de medios para Drupal 7 con navegador de archivos, widgets de campo, integración con WYSIWYG y soporte para fuentes de medios remotas.
media
Overview
El módulo Media es un marco completo de gestión de archivos y activos multimedia para Drupal 7. Proporciona una interfaz de usuario unificada donde los editores y administradores pueden cargar, gestionar y reutilizar archivos y activos multimedia, independientemente de si están alojados localmente o en servicios de terceros como YouTube o Vimeo.
El módulo reemplaza los campos estándar de carga de archivos con una interfaz sofisticada de navegador de medios que permite a los usuarios seleccionar archivos existentes de una biblioteca de medios, cargar nuevos archivos o agregar medios desde URLs remotas. Se integra perfectamente con editores WYSIWYG a través de un submódulo dedicado, permitiendo a los creadores de contenido incrustar activos multimedia directamente en contenido de texto enriquecido.
Media 7.x-2.x representa un cambio arquitectónico significativo respecto a versiones anteriores, pasando de un tipo de entidad de medios personalizado a aprovechar el módulo File Entity para la gestión de archivos. Esto proporciona una mejor integración con el sistema de campos de Drupal y Views, manteniendo la compatibilidad hacia atrás mediante ayudantes de migración.
Features
- Interfaz de diálogo de navegador de medios para seleccionar y cargar archivos con ventana emergente basada en jQuery UI
- Widget de campo (Media browser) para campos de archivo e imagen que reemplaza los widgets de carga estándar
- Integración con Views con plugins de visualización y estilo personalizados para crear interfaces de navegación de medios
- Integración con editores WYSIWYG (CKEditor, TinyMCE) para incrustar medios en contenido de texto enriquecido mediante submódulo
- Soporte para fuentes de medios de Internet/remotas para importar desde URLs y servicios como YouTube y Vimeo
- Funcionalidad de carga masiva usando Plupload para cargar múltiples archivos simultáneamente
- Vista de cuadrícula de miniaturas para administración de medios junto con la vista de tabla estándar
- Arquitectura extensible de plugins del navegador para agregar fuentes de medios personalizadas
- Estilo de imagen personalizado (media_thumbnail) para visualización consistente de miniaturas
- Iconos de tipo de archivo para varios tipos de medios (imagen, video, audio, documento)
- Soporte para Entity Translation para gestión multilingüe de archivos
- Soporte para stream wrapper tanto para esquemas de almacenamiento de archivos locales como remotos
- Filtro de entrada para convertir etiquetas de medios en marcado renderizado en contenido de texto
Use Cases
Construir una biblioteca de medios para editores de contenido
Habilite Media y configure los campos de archivo en los tipos de contenido para usar el widget Media browser. Los editores pueden entonces navegar por los medios existentes, cargar nuevos archivos o buscar en la biblioteca al agregar contenido. La vista de miniaturas en admin/content/file/thumbnails proporciona una forma visual de gestionar todos los medios del sitio.
Incrustar medios en contenido WYSIWYG
Habilite el submódulo Media WYSIWYG, configure su perfil WYSIWYG para incluir el botón Media y habilite el filtro 'Convertir etiquetas Media a marcado' en su formato de texto. Los creadores de contenido pueden hacer clic en el botón Media para navegar e incrustar imágenes, videos y otros archivos directamente en su contenido de texto enriquecido.
Agregar videos de YouTube/Vimeo
Habilite el submódulo Media Internet Sources e instale un módulo de proveedor como Media: YouTube. Los usuarios pueden entonces pegar URLs de YouTube o códigos de incrustación, y el video se almacenará como una entidad de archivo que puede incrustarse en contenido o adjuntarse a campos.
Carga masiva de activos de medios
Habilite el submódulo Media Bulk Upload (requiere Plupload). La pestaña de carga en el navegador de medios soportará múltiples cargas simultáneas. Use la función Importar en admin/content/file/import para importar archivos por lotes desde el sistema de archivos del servidor.
Crear fuentes de medios personalizadas
Implemente hook_media_browser_plugin_info() para agregar pestañas personalizadas al navegador de medios, y hook_media_internet_providers() para agregar soporte para nuevos servicios de medios remotos. Cree una clase que extienda MediaBrowserPlugin o MediaInternetBaseHandler.
Restringir tipos de medios por campo
Configure los ajustes del widget de campo para cada campo de medios para especificar tipos de archivo permitidos (imagen, video, documento), plugins de navegador habilitados y esquemas de URI permitidos. Esto restringe lo que los usuarios pueden seleccionar o cargar para campos específicos.
Tips
- Use el estilo de imagen 'media_thumbnail' para una visualización consistente de miniaturas en el navegador de medios y las interfaces de administración.
- Al crear Views para navegación de medios, use los plugins de visualización y estilo 'media_browser' para una integración adecuada con la interfaz del navegador de medios.
- Para mejor rendimiento con bibliotecas de medios grandes, configure el almacenamiento en caché de Views en la vista de biblioteca de medios.
- El tema del navegador de medios puede configurarse por separado del tema del sitio - use el tema de administración para mejor compatibilidad con la interfaz de ventana emergente.
- Los plugins de navegador personalizados deben extender MediaBrowserPlugin e implementar el método view() para proporcionar el contenido de su pestaña.
- Use hook_media_browser_params_alter() para personalizar el comportamiento del navegador de medios según el contexto (ej. diferentes restricciones de tipo de archivo por campo).
- El modo de vista 'WYSIWYG' agregado por Media WYSIWYG puede configurarse por separado para controlar cómo aparecen los medios en el editor vs. la página renderizada.
Technical Details
Admin Pages 4
/admin/config/media/browser
Configura el comportamiento y la visualización del diálogo del navegador de medios, incluyendo selección de tema, dimensiones de la ventana emergente y configuración de superposición.
/admin/content/file/thumbnails
Gestiona archivos usando una vista de cuadrícula de miniaturas en lugar de la vista de tabla estándar. Proporciona navegación visual de archivos con casillas de verificación para operaciones masivas.
/admin/content/file/import
Importa archivos desde el sistema de archivos local a la biblioteca de medios. Requiere el submódulo Media Bulk Upload.
/file/add/web
Agrega archivos desde URLs de Internet o servicios remotos. Soporta URLs directas y códigos de incrustación de servicios como YouTube y Vimeo.
Permissions 5
Hooks 13
hook_media_parse
Analiza una URL o código incrustado en una URI única para almacenamiento de archivos de medios.
hook_media_parse_alter
Altera el análisis de URLs y códigos incrustados en URIs únicas.
hook_media_browser_plugin_info
Devuelve una lista de plugins para las pestañas del navegador de medios.
hook_media_browser_plugin_info_alter
Altera la lista de plugins del navegador de medios.
hook_media_browser_plugins_alter
Altera los plugins antes de que se rendericen en el navegador de medios.
hook_media_browser_params_alter
Altera los parámetros pasados al navegador de medios para personalización.
hook_media_widget_multiple_alter
Altera la tabla del widget de elementos múltiples de medios antes del renderizado.
hook_media_internet_providers
Devuelve una lista de proveedores de medios de Internet para manejo de URL/código de incrustación.
hook_media_internet_providers_alter
Altera la lista de proveedores de medios de Internet.
hook_media_wysiwyg_allowed_view_modes_alter
Altera la lista de modos de vista permitidos para un archivo incrustado en WYSIWYG.
hook_media_wysiwyg_format_form_prepare_alter
Altera el formulario de selección de modo de vista WYSIWYG antes de que se ejecuten otras alteraciones.
hook_media_wysiwyg_token_to_markup_alter
Altera la salida renderizada generada por las etiquetas de filtro de Media.
hook_media_wysiwyg_allowed_attributes_alter
Altera la lista de atributos permitidos en incrustaciones de medios WYSIWYG.
Troubleshooting 6
Asegúrese de que las bibliotecas jQuery UI (dialog, draggable, resizable, tabs) estén disponibles. Limpie las cachés de Drupal y del navegador. Verifique conflictos de JavaScript con otros módulos.
Verifique que el submódulo Media WYSIWYG esté habilitado, el botón media esté habilitado en la configuración de su perfil WYSIWYG y el usuario tenga el permiso 'use media wysiwyg'.
Habilite el filtro 'Convertir etiquetas Media a marcado' en el formato de texto utilizado por el contenido. Asegúrese de que se ejecute antes del filtro 'Convertir URLs en enlaces'.
Habilite el submódulo Media Migrate File Types y visite admin/structure/file-types/upgrade para migrar los tipos de archivo heredados a tipos de File Entity.
Verifique que los usuarios tengan el permiso 'create files' de File Entity y 'access media browser' de Media. Para WYSIWYG, también otorgue el permiso 'use media wysiwyg'.
Asegúrese de que los módulos Plupload y Multiform (7.x-1.3+) estén instalados y habilitados. Verifique los límites de carga de PHP (upload_max_filesize, post_max_size) en la configuración del servidor.
Security Notes 5
- El permiso 'use media wysiwyg' está marcado como restringido porque los formularios WYSIWYG generan derivados de imagen, lo cual podría llevar a vulnerabilidades DoS si se explota.
- El permiso 'import media' está restringido ya que permite importar archivos desde el sistema de archivos del servidor, lo cual podría exponer archivos sensibles si se configura incorrectamente.
- Los parámetros del navegador de medios de la consulta HTTP no deben ser confiables para decisiones sensibles de seguridad. Use hook_media_browser_params_alter() para inyección segura de parámetros.
- Al implementar proveedores de medios de Internet personalizados, valide y sanee toda la entrada del usuario para prevenir ataques de inyección.
- Las restricciones de tipo de archivo en la configuración del widget de campo se aplican del lado del cliente y del servidor, pero siempre valide las cargas a nivel del servidor.