October CMS 内置媒体管理器,使得发布视频和照片等大型资产变得轻松。这些资产随后可以通过用户界面插入到您的页面和内容文件中。

在大多数情况下,当您在内容中插入媒体资产时,将使用完整的URL。然而,也可以使用 |media Twig 过滤器从媒体目录中的相对路径生成这些URL。
{{ 'relative/path/to/asset.jpg'|media }}查看 媒体过滤器文章 了解更多。
有几个选项允许您微调媒体管理器,这些选项在 config/media.php 文件中定义。
/*
|--------------------------------------------------------------------------
| Ignored Files and Patterns
|--------------------------------------------------------------------------
|
| The media manager wil ignore file names and patterns specified here
|
*/
'ignore_files' => ['.svn', '.git', '.DS_Store', '.AppleDouble'],
'ignore_patterns' => ['^\..*'],指定媒体文件存储位置的配置位于系统配置文件中,请参阅提供商文章关于使用第三方提供商,例如 Amazon S3。
默认情况下 系统使用 HTML5 音频和视频标签 渲染 音频和视频文件:
<video src="video.mp4" controls></video>或
<audio src="audio.mp3" controls></audio>这种行为可以被覆盖。如果存在 oc-audio-player.htm 和 oc-video-player.htm CMS 部分,它们将用于显示音频和视频内容。在这些部分中,使用变量 src 输出指向源文件的链接。示例:
<video src="{{ src }}" width="320" height="200" controls preload></video>如果您不想使用 HTML5 播放器,您可以在部分模板中提供任何其他标记。有一个第三方脚本,它可以在旧版浏览器中启用对 HTML5 视频和音频标签的支持。
由于局部模板是使用 Twig 编写的,您可以根据命名约定自动添加备用视频源。例如,如果存在一个约定,即每个全分辨率视频都始终有一个较低分辨率的视频,并且较低分辨率的文件扩展名为 "iphone.mp4",那么生成的标记可能如下所示:
<video controls>
<source
src="{{ src }}"
media="only screen and (min-device-width: 568px)"></source>
<source
src="{{ src|replace({'.mp4': '.iphone.mp4'}) }}"
media="only screen and (max-device-width: 568px)"></source>
</video>媒体管理器提供一些事件,供您监听以提高可扩展性。
| Event | Description | Parameters |
|---|---|---|
| folder.delete | Called when a folder is deleted | (string) $path |
| file.delete | Called when a file is deleted | (string) $path |
| folder.rename | Called when a folder is renamed | (string) $originalPath, (string) $newPath |
| file.rename | Called when a file is renamed | (string) $originalPath, (string) $newPath |
| folder.create | Called when a folder is created | (string) $newFolderPath |
| folder.move | Called when a folder is moved | (string) $path, (string) $dest |
| file.move | Called when a file is moved | (string) $path, (string) $dest |
| file.upload | Called when a file is uploaded | (string) $filePath, (\Symfony\Component\HttpFoundation\File\UploadedFile) $uploadedFile |
要挂钩这些事件,请直接扩展 Media\Widgets\MediaManager 类。
Media\Widgets\MediaManager::extend(function($widget) {
$widget->bindEvent('file.rename', function ($originalPath, $newPath) {
// Update custom references to path here
});
});或全局监听,通过 Event 门面(每个事件都以 media. 为前缀,并将实例化的 Media\Widgets\MediaManager 对象作为第一个参数传递)。
Event::listen('media.file.rename', function($widget, $originalPath, $newPath) {
// Update custom references to path here
});