fab / media
TYPO3 CMS 的媒体管理系统。
Requires
- fab/vidi: ~5.2 || ^6
- typo3/cms-core: ^11
Suggests
- laravel/pint: ^1.8
- dev-master
- 6.1.5
- 6.1.4
- 6.1.3
- 6.1.2
- 6.1.1
- 6.1.0
- 6.0.4
- 6.0.3
- 6.0.2
- 6.0.1
- 6.0.0
- 5.1.0
- 5.0.0
- 4.5.x-dev
- 4.5.0
- 4.4.3
- 4.4.2
- 4.4.1
- 4.4.0
- 4.3.0
- 4.2.0
- 4.1.0
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.7.x-dev
- 3.7.6
- 3.7.5
- 3.7.4
- 3.7.3
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.1
- 3.6.0
- 3.5.3
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.0
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.0
- 2.0.2
- 2.0.1
- 2.0.0
This package is auto-updated.
Last update: 2024-09-12 12:43:50 UTC
README
Media 是一个用于管理 TYPO3 CMS 6.2 资产的工具,它在 FAL 的基础上构建。文件抽象层 API 在 TYPO3 6.0 中引入,允许在 CMS 中集中处理文件。基本上,Media 提供以下功能集:
- 资产的先进元数据处理
- 用户友好的 BE 模块
- 文件批量上传和后处理
- 元数据的多语言处理
- 与文本编辑器(RTE)集成
BE 模块的通用视图。Media 的最新版本使用文件夹树。这可以在扩展管理器中启用/禁用。注意,可以通过点击右上角的复选框递归地浏览文件。
可以通过选择下拉菜单中的可用列来显示/隐藏字段。
通过标题、类别、使用情况等高级搜索文件。可以累积条件。
内联编辑就像点击单元格一样简单。
可以内联翻译文件。
批量编辑 文件的元数据。可编辑的列顶部有编辑图标,可以编辑一批文件。
将选定的数据导出到各种格式:CSV、XML、XLS
一系列与文件相关的管理员工具:查找重复文件、缩略图预生成等...
兼容性和维护
此包目前维护以下版本:
TYPO3 版本 | 包版本 | 分支 | 维护 ||-----------------------|-----------------|---------|---------------| | TYPO3 11.5.x | 6.x | master | 是 | | TYPO3 11.5.x | 5.x | - | 是 | | TYPO3 10.4.x | 4.x | - | 否 | | TYPO3 6.2.x | 3.x | - | 否 | | TYPO3 6.1.x | 2.x | - | 否 | | TYPO3 6.1.x | 1.x | - | 否 |
项目信息和版本
项目主页:https://github.com/fabarea/media
在 TER 上发布的稳定版本:http://typo3.org/extensions/repository/view/media
从 Git 的开发版本
cd typ3conf/ext git clone https://github.com/fabarea/media.git
新闻快讯也发布在 http://twitter.com/fudriot
安装
从 Git 仓库 或从稳定版本的 TER 下载源代码。在扩展管理器中按正常方式安装扩展。
配置
一些设置,如上传时应用的默认类别,是全局的,必须在扩展管理器中的 Media 设置中进行配置。
为编辑用户在 Backend 用户组中启用正确的权限,以便它可以访问 Media 模块并能够上传文件。
此外,由于 Media 支持多存储,许多设置必须按存储进行配置。请确保它们已正确设置。对于 Media 安装后创建的新存储,它们将具有默认值。但是,对于现有存储,它们将没有值。
编辑存储的设置
应用不同的上传设置
为每种文件类型配置目标文件夹
用户TSConfig
您可以使用选项 options.vidi.enableMediaFilePicker 来控制媒体文件选择器的显示。请注意,此选项仅在首先在扩展管理器中激活文件选择器时才会被考虑。文件选择器是用于将文件与内容元素(如图片)或其他类型记录连接的弹出窗口。然而,默认情况下,核心弹出窗口用于文件夹树的目的。在媒体弹出窗口中,由于iframe问题,不会显示文件夹树。作为提示,使用媒体中的递归浏览以检索所有文件。
# Define whether to use default file picker or the one from Media (default = 1) but options.vidi.enableMediaFilePicker = 1
Suhosin
请注意,已激活Suhosin补丁的PHP配置将默认限制URL中允许传递的变量个数为100。此限制必须增加到140。
suhosin.get.max_vars = 140
如何在媒体模块中自定义网格
请注意,媒体BE模块由Vidi提供支持,它是一个TYPO3 CMS的列表组件。要了解更多关于Vidi以及如何配置网格的信息,请参阅网格章节。
视图辅助器
显示类别X的文件列表
您可以使用视图辅助器在前端检索多个文件。假设我们想显示来自存储“1”的“png”图像列表以及相关的类别。在您的Fluid模板中的代码可能如下所示:
<strong>Number of files: {v:content.count(matches: {storage: 1}, type: 'sys_file')}</strong> <f:if condition="{v:content.find(matches: {storage: 1}, type: 'sys_file')}"> <ul> <f:for each="{v:content.find(matches: '{storage: 1}', type: 'sys_file')}" as="file"> <li> {file.uid} - {file.metadata.title} - <m:file.thumbnail file="{file}" output="imageWrapped"/> <f:if condition="{file.metadata.categories}}"> <ul> <f:for each="{file.metadata.categories}" as="category"> <li>{category.title}</li> </f:for> </ul> </f:if> </li> </f:for> </ul> </f:if> {namespace m=Fab\Media\ViewHelpers} {namespace v=Fab\Vidi\ViewHelpers}
这里有一个更复杂的示例,我们想检索与前面相同的文件,但属于类别1和2的所有文件,并按标题排序。我们必须提供“别名”作为解决方案,因为Fluid无法解析表达式 matches: {metadata.categories: '1,2'}
,并会引发异常。
<f:for each="{v:content.find( matches: {storage: 1, extension: 'png', categories: '1,2'}, orderings: {title: 'ASC'}, type: 'sys_file', aliases: {categories: 'metadata.categories', title: 'metadata.title'} )}" as="file"> <li>..</li> </f:for>
或者
<f:for each="{v:content.find(selection: 'my-selection')}" as="file"> <li>..</li> </f:for>
可以通过编程方式实现相同的效果。
// Get the Content Repository for sys_file. $contentRepository = \Fab\Vidi\Domain\Repository\ContentRepositoryFactory::getInstance('sys_file'); // Initialize a Matcher object. /** @var \Fab\Vidi\Persistence\Matcher $matcher */ $matcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\Fab\Vidi\Persistence\Matcher::class); // Add some criteria. $matcher->equals('storage', '1'); $matcher->equals('metadata.categories', '1'); // "metadata" correspond to the join defined in the TCA of "sys_file". // etc... you can add more criteria as instance a "like" $matcher->like('metadata.title', 'foo'); // Fetch the objects. $files = $contentRepository->findBy($matcher);
缩略图视图辅助器
缩略图API旨在根据文件类型(图像、文档、视频等)独立渲染文件的预览。请注意,只有“图像”和“文档”的缩略图服务得到了良好实现。视频和音频仍在待办事项列表中。如果没有找到适当的缩略图服务,则调用后备服务生成占位符缩略图。
缩略图视图辅助器可以使用如下所示:
# The minimum required: <m:file.thumbnail file="{file}"/> # Give more settings to the thumbnail: <m:file.thumbnail file="{file}" configuration="{width: 800, height: 800}" attributes="{class: 'file-thumbnail'}" output="image"/> # Required attributes: # -------------------- # # file="{file}" # Default values: # --------------- # # configuration= array() # attributes = array() # output = image (possible values: "uri", "image", "imageWrapped") # preset = NULL # Pass some preset as for the dimension. Values can be: # - image_thumbnail => '100x100' (where maximum width is 100 and maximum height is 100) # - image_mini => '120x120' # - image_small => '320x320' # - image_medium => '760x760' # - image_large => '1200x1200' <m:file.thumbnail file="{file}" preset="image_medium"/> {namespace m=Fab\Media\ViewHelpers} # Or if your template contains ``<section />``, <html xmlns:f="http://typo3.org/ns/typo3/fluid/viewhelpers" xmlns:m="http://typo3.org/ns/Fab/Media/ViewHelpers"> <section> <m:file.thumbnail file="{file}" preset="image_medium"/> </section> </html>
除了视图辅助器之外,还可以通过编程方式生成缩略图。以下示例说明了某些可能性。有关更多见解,请参阅类本身。下面是代码:
/** @var $thumbnailService \Fab\Media\Thumbnail\ThumbnailService */ $thumbnailService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\Fab\Media\Thumbnail\ThumbnailService', $fil::class); $thumbnail = $thumbnailService ->setConfiguration($configuration) ->setOutputType(\Fab\Media\Thumbnail\ThumbnailInterface::OUTPUT_IMAGE_WRAPPED) ->setAppendTimeStamp(TRUE) ->create(); print $thumbnail <a href="..." target="_blank"> <img src="..." alt="..." title="..." /> </a>
媒体工具
通过Vidi在ext_tables.php
中提供的工具API注册工具,并且可以通过在BE模块右上角图标中点击来访问。这些工具仅对管理员可见。
\Fab\Vidi\Tool\ToolRegistry::getInstance()->register('sys_file', 'Fab\Media\Tool\MissingFilesFinderTool');
文件上传API
在BE模块中,文件上传由Fine Uploader处理,这是一个旨在在网络上提供用户友好文件上传体验的JavaScript插件。该插件依赖于HTML5技术,它使桌面上的拖放成为可能。
在服务器端,有一个API可以透明地处理文件是从XHR请求还是POST请求上传的。
# Code below is simplified for the documentation sake. # Check out for more insight EXT:media/Classes/Controller/AssetController.php @ uploadAction /** @var $uploadManager \Fab\Media\FileUpload\UploadManager */ $uploadManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\Fab\Media\FileUpload\UploadManager::class); try { /** @var $uploadedFileObject \Fab\Media\FileUpload\UploadedFileInterface */ $uploadedFileObject = $uploadManager->handleUpload(); } catch (\Exception $e) { $response = array('error' => $e->getMessage()); } $newFileObject = $targetFolder->addFile($uploadedFileObject->getFileWithAbsolutePath(), $uploadedFileObject->getName());
图像优化API
当上传图像时,有一个后处理步骤可以对图像进行优化。默认情况下,有两个预配置的优化选项:调整大小和旋转。调整大小处理会将图像的大小减小,以防其超过特定尺寸。允许的最大尺寸需要根据存储进行配置。旋转优化器读取EXIF元数据并自动旋转图像。自动旋转功能归功于Xavier Perseguers,他在其扩展中找到了很大的灵感。
如果需要,可以添加额外的自定义优化器。注意,该类必须实现接口\Fab\Media\FileUpload\ImageOptimizerInterface
,可以使用以下代码添加:
\Fab\Media\FileUpload\ImageOptimizer::getInstance()->add('Fab\Media\FileUpload\Optimizer\Resize');
权限管理
权限管理是关于控制文件的可访问性。可以在“访问”选项卡下为每个文件定义权限,以便将文件连接到前端组。
请注意,媒体将文件权限委托给第三方扩展,例如扩展naw_securedl。从长远来看,应考虑使用安全本地驱动程序。
基本元数据提取器
作为基本元数据提取器服务,媒体将在文件上传时或通过调度任务索引文件时设置标题。元数据标题基本上来源于文件名,例如my_report.pdf
将结果为我的报告
。这应该有助于编辑处理这些元数据并节省他们一些打字时间。当然,如果之前没有值,则只会设置标题。