OctoberCms-Media Manager

默认情况下,Media Manager与安装目录的storage / app / media子目录一起使用。为了使用Amazon S3或Rackspace CDN,您应该更新系统配置。

您需要先安装驱动程序插件,然后才能使用Amazon S3或Rackspace CDN功能。

请注意,更改媒体管理器配置后,应重置其缓存。您可以通过按“媒体管理器”工具栏中的“ 刷新”按钮来完成此操作。

配置Amazon S3访问

要将Amazon S3与OctoberCMS一起使用,您应该创建S3存储桶,存储桶中的文件夹以及API用户。

注册Amazon AWS帐户或使用您现有的帐户登录AWS控制台。打开S3管理面板。创建一个新存储桶并为其指定任何名称(存储桶的名称将成为您的公共文件URL的一部分)。

在存储桶中创建媒体文件夹。文件夹名称无关紧要。此文件夹将是您的媒体库的根。

默认情况下,无法直接访问S3存储桶中的文件。要公开存储桶,请返回到存储桶列表,然后单击存储桶。单击右侧栏中的“ 属性”按钮。展开权限选项卡。单击编辑存储桶策略链接。将以下代码粘贴到策略弹出窗口。用您的实际存储桶名称替换存储桶名称:

{
    "Version": "2008-10-17",
    "Id": "Policy1397632521960",
    "Statement": [
        {
            "Sid": "Stmt1397633323327",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::BUCKETNAME/*"
        }
    ]
}

单击保存按钮以应用策略。该策略为存储桶中的所有文件夹和目录提供公共只读访问权限。如果要将存储桶用于其他需求,则可以设置对存储桶中特定文件夹的公共访问,只需在Resource值中指定目录名称即可:

"arn:aws:s3:::BUCKETNAME/media/*"

您还应该创建一个API用户,OctoberCMS将使用该用户来管理存储桶文件。在AWS控制台中,转到IAM部分。转到“用户”选项卡并创建一个新用户。用户名无关紧要。创建新用户时,请确保选中“为每个用户生成访问密钥”复选框。AWS创建用户后,它允许您查看安全凭证-用户访问密钥ID秘密访问密钥。复制密钥并将其放入临时文本文件。

返回到用户列表,然后单击刚刚创建的用户。在“ 权限”部分中,单击“ 附加策略”按钮。在列表中选择AmazonS3FullAccess策略,然后单击附加策略按钮。

现在,您拥有所有信息来更新OctoberCMS配置。打开config / filesystem.php脚本并找到disks部分。它已经包含s3配置,您需要替换API凭据和存储桶信息参数:

参数
您之前创建的用户的访问密钥ID值。
秘密 您创建的用户的秘密访问密钥值。
您的存储桶名称。
区域 存储桶区域代码,请参见下文。

您可以在存储桶属性中的S3管理控制台中找到存储桶区域。“属性”选项卡显示区域名称,例如俄勒冈州。S3驱动程序配置需要存储区代码。使用此表查找您的存储桶的代码(您也可以查看AWS文档):

区域
美国东部(俄亥俄州) us-east-2
美国东部(弗吉尼亚北部) us-east-1
美国西部(加利福尼亚北部) us-west-1
美国西部(俄勒冈州) 美国西部2
亚太地区(香港) ap-east-1
亚太地区(孟买) ap-south-1
亚太地区(大阪本地) ap-northeast-3
亚太地区(首尔) ap-northeast-2
亚太地区(新加坡) ap-southeast-1
亚太地区(悉尼) ap-southeast-2
亚太地区(东京) ap-northeast-1
加拿大(中部) ca-central-1
中国(北京) cn-north-1
中国(宁夏) cn-northwest-1
欧盟(法兰克福) eucentral-1
欧盟(爱尔兰) eu-west-1
欧盟(伦敦) eu-west-2
欧盟(巴黎) eu-west-3
欧盟(斯德哥尔摩) eu-north-1
南美洲(圣保罗) sa-east-1
中东(巴林) 我南1

更新后的示例配置:

'disks' => [
    ...
    's3' => [
        'driver' => 's3',
        'key'    => 'XXXXXXXXXXXXXXXXXXXX',
        'secret' => 'xxxXxXX+XxxxxXXxXxxxxxxXxxXXXXXXXxxxX9Xx',
        'region' => 'us-west-2',
        'bucket' => 'my-bucket'
    ],
    ...
]

保存config / filesystem.php脚本并打开config / cms.php脚本。查找部分存储。在媒体参数更新disk文件夹路径参数中:

参数
磁碟 使用s3值。
您在S3存储桶中创建的文件夹的名称。
路径 存储桶中文件夹的公共路径,请参见下文。

要获取文件夹的路径,请打开AWS控制台并转到S3部分。导航到存储桶,然后单击之前创建的文件夹。将任何文件上传到文件夹,然后单击文件。单击右侧栏中的“ 属性”按钮。文件URL在Link参数中。复制URL并从中删除文件名和斜杠。

存储配置示例:

'storage' => [
    ...
    'media' => [
        'disk'   => 's3',
        'folder' => 'media',
        'path' => 'https://s3-us-west-2.amazonaws.com/your-bucket-name/media'
    ]
]

恭喜你!现在,您准备将Amazon S3与OctoberCMS一起使用。请注意,您还可以将Amazon CloudFront CDN配置为与存储桶配合使用。本文档未涵盖该主题,请参考CloudFront文档。配置CloudFront之后,您将需要更新存储配置中的path参数。

配置Rackspace CDN访问

要将Rackspace CDN与OctoberCMS一起使用,您应该创建Rackspace CDN容器,容器中的文件夹和API用户。

登录到Rackspace管理控制台,然后导航到“存储/文件”页面。创建一个新的容器。容器名称无关紧要,它将成为您的公共文件URL的一部分。为新容器选择“ 公共(启用CDN)”类型。

在容器中创建媒体文件夹。文件夹名称无关紧要。此文件夹将是您的媒体库的根。

您应该创建一个API用户,OctoberCMS将使用该用户来管理CDN容器中的文件。在Rackspace控制台中打开“帐户/用户管理”页面。单击创建用户按钮。填写用户名(例如october.cdn.api),密码,安全性问题和答案。在“ 产品访问权限”部分中,选择“ 自定义”,然后在CDN行中选择“ 管理员”。在“ 帐户”部分中使用“ 无访问权限”角色,在“ 联系信息”部分中使用“ 技术联系人”类型。保存用户帐户。保存帐户后,您将看到带有API密钥的“登录详细信息”部分 包含您需要在OctoberCMS配置文件中使用的值的行。

现在,您拥有所有信息来更新OctoberCMS配置。打开config / filesystem.php脚本并找到disks部分。它已经包含Rackspace配置,您需要替换API凭证和容器信息参数:

参数
用户名 Rackspace用户名(例如october.cdn.api)。
您可以从Rackspace用户个人资料页面复制的用户的API密钥
容器 容器名称。
区域 存储桶区域代码,请参见下文。
终点 保持原样。
区域 您可以在Rackspace控制面板的CDN容器列表中找到该区域。该代码是3个字母的值,例如,它是Chicago 的ORD

更新后的示例配置:

'disks' => [
    ...
    'rackspace' => [
        'driver'    => 'rackspace',
        'username'  => 'october.api.cdn',
        'key'       => 'xx00000000xxxxxx0x0x0x000xx0x0x0',
        'container' => 'my-bucket',
        'endpoint'  => 'https://identity.api.rackspacecloud.com/v2.0/',
        'region'    => 'ORD'
    ],
    ...
]

保存config / filesystem.php脚本并打开config / cms.php脚本。查找部分存储。在媒体参数更新disk文件夹路径参数中:

参数
磁碟 使用机架空间值。
您在CDN容器中创建的文件夹的名称。
路径 容器中文件夹的公共路径,请参见下文。

要获取文件夹的路径,请转到Rackspace控制台中的CDN容器列表。单击容器,然后打开媒体文件夹。上传任何文件。上传文件后,单击它。该文件将在新的浏览器标签中打开。复制文件URL,并从中删除文件名和斜杠。

存储配置示例:

'storage' => [
    ...
    'media' => [
        'disk'   => 'rackspace',
        'folder' => 'media',
        'path' => 'https://xxxxxxxxx-xxxxxxxxx.r00.cf0.rackcdn.com/media'
    ]
]

恭喜你!现在,您准备将Rackspace CDN与OctoberCMS一起使用。

影音播放器

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


要么


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


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

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


其他配置选项

有几个选项可让您微调媒体管理器。所有这些都可以在config / cms.php脚本的storage / media部分中定义,例如:

'storage' => [
    ...

    'media' => [
        ...
        'ignore' => ['.svn', '.git', '.DS_Store']
    ]
],
参数
忽视 要忽略的文件和目录名称的列表。默认为['.svn','。git','。DS_Store']。
ttl 指定缓存的生存时间(以分钟为单位)。默认值为10。添加,更新或删除库项目时,缓存会自动失效。
imageExtensions 与Image文档类型相对应的文件扩展名。默认值为['gif','png','jpg','jpeg','bmp']
videoExtensions 与视频文档类型相对应的文件扩展名。默认值为['mp4','avi','mov','mpg']
audioExtensions 与音频文档类型相对应的文件扩展名。默认值为['mp3','wav','wma','m4a']

大事记

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

事件 描述 参量
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
上传文件 上传文件时调用 (string) $filePath(\Symfony\Component\HttpFoundation\File\UploadedFile) $uploadedFile

要陷入这些事件,请Backend\Widgets\MediaManager直接扩展该类:

Backend\Widgets\MediaManager::extend(function($widget) {
    $widget->bindEvent('file.rename', function ($originalPath, $newPath) {
        // Update custom references to path here
    });
});

或通过EventFacade 全局监听(每个事件都带有前缀,media.并将实例化的Backend\Widgets\MediaManager对象作为第一个参数传递给它):

Event::listen('media.file.rename', function($widget, $originalPath, $newPath) {
    // Update custom references to path here
});

故障排除

使用远程服务的最常见问题是SSL连接问题。如果收到SSL错误,请确保您的服务器具有公共证书颁发机构(CA)的新SSL证书。

你可能感兴趣的:(OctoberCms-Media Manager)