介绍

October CMS Documentation Docs

介绍

October CMS 附带了一个内置的媒体管理器,可以轻松发布更多的资产,例如视频和照片。然后可以通过用户界面将这些资产插入到您的页面和内容文件中。

image

# 链接到媒体

在大多数情况下,将媒体资产插入您的内容时将使用完整的 URL。但是,也可以使用 |media 过滤器 从它们在媒体目录中的相对路径生成这些 URL。

{{ 'relative/path/to/asset.jpg'|media }}

您还可以使用MediaLibrary 类在 PHP 中生成 URL。

\Media\Classes\MediaLibrary::url('relative/path/to/asset.jpg');

# 配置选项

有几个选项允许您微调媒体管理器,这些选项在 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)的提供商文章

# SVG 上传默认禁用

出于安全原因,默认情况下在October CMS 中禁用上传 SVG 图形文件。这是因为当 SVG 文件呈现在页面上时,可能会执行恶意代码。如果您的管理区域向公众开放,我们建议您保持正常设置。

要允许在后端使用 SVG 文件,只需将其添加到图像扩展名列表中即可。

'image_extensions' => [..., 'svg'],

# 音频和视频播放器

默认情况下,系统使用 HTML5 音频和视频标签来渲染音频和视频文件:

<video src="video.mp4" controls></video>

或者

<audio src="audio.mp3" controls></audio>

此行为可以被覆盖。如果有 oc-audio-player.htmoc-video-player.htm CMS 部件,它们将用于显示音频和视频内容。在部件内部使用变量 src 输出到源文件的链接。例子:

<video src="{{ src }}" width="320" height="200" controls preload></video>

如果您不想使用 HTML5 播放器,您可以在部件中提供任何其他标记。 有一个 第三方脚本 (opens new window) 可以在旧浏览器中支持 HTML5 视频和音频标签。

由于部件是用 Twig 编写的,因此您可以根据命名约定自动添加替代视频源。 例如,如果约定每个全分辨率视频总是有一个较小分辨率的视频,并且较小分辨率的文件具有扩展名huawei.mp4,则生成的标记可能如下所示:

<video controls>
    <source
        src="{{ src }}"
        media="only screen and (min-device-width: 568px)"></source>
    <source
        src="{{ src|replace({'.mp4': '.huawei.mp4'}) }}"
        media="only screen and (max-device-width: 568px)"></source>
</video>

# 事件

媒体管理器提供了一些 事件,您可以监听它们以提高可扩展性。

事件 说明 参数
folder.delete 删除文件夹时调用 (string) $path
file.delete 删除文件时调用 (string) $path
folder.rename 重命名文件夹时调用 (string)$originalPath,(string)$newPath
file.rename 重命名文件时调用 (string)$originalPath,(string)$newPath
folder.create 创建文件夹时调用 (string)$newFolderPath
folder.move 移动文件夹时调用 (string) $path,(string)$dest
file.move 移动文件时调用 (string) $path,(string)$dest
file.upload 上传文件时调用 (string)$filePath,(\Symfony\Component\HttpFoundation\File\UploadedFile) $uploadedFile

要挂钩这些事件,请直接扩展Media\Widgets\MediaManager

``php \Media\Widgets\MediaManager::extend(function($widget) { $widget->bindEvent('file.rename', function ($originalPath, $newPath) { // 在此处更新对路径的自定义引用 }); });


或者通过 `Event` 门面全局监听(每个事件都以 `media.` 为前缀,并将被实例化的 `Media\Widgets\MediaManager` 对象作为第一个参数传递)

```php
\Event::listen('media.file.rename', function($widget, $originalPath, $newPath) {
    // 在此处更新对路径的自定义引用
});