ichhabrecht / filefill
从不同的远程位置查找和获取缺少的本地文件
Requires
- php: ^7.4 || ^8.0
- typo3/cms-core: ^10.4.11 || ^11.5 || ^12.4
Requires (Dev)
- phpunit/phpunit: ^9.6
- typo3/testing-framework: ^6.16 || ^7.0.2
Replaces
- typo3-ter/filefill: 4.3.2
This package is auto-updated.
Last update: 2024-09-23 09:50:17 UTC
README
从不同的远程位置查找和获取缺少的本地文件。
曾经尝试从现有系统复制来设置新系统吗?怀疑所有文件(在fileadmin中)是否真的需要?是否遇到过本地文件丢失的问题?
Filefill从一个或多个远程服务器获取缺少的文件,以确保您有新系统所需的所有文件。
一旦配置设置完毕,可以通过在前端加载缺少文件的页面来触发获取。
该扩展需要使用FAL api来获取缺少的文件。文件直接存储在(本地)存储文件夹中(例如fileadmin)。您可以通过删除存储文件夹中的本地文件来随时重新运行filefill。
安装
只需使用Composer或扩展管理器安装扩展。
composer require ichhabrecht/filefill
使用方法
您需要配置一个或多个现有文件存储的资源。
前提条件:目前仅支持具有“本地文件系统”驱动器的存储。
可以使用以下两种方法之一配置文件存储的资源,其中数据库记录配置在设置时优先使用。如果没有设置,则使用TYPO3_CONF_VARS
配置。
数据库记录配置
- 转到您的TYPO3页面树根(id=0)
- 切换到列表模块(Web -> 左侧的列表)
- 找到“文件存储”部分并编辑一条记录
- 切换到“文件填充”选项卡并选择启用复选框
- 定义应用于获取缺少文件的资源链
TYPO3_CONF_VARS配置
- 给定uid为1的文件存储,配置可能如下所示
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['filefill']['storages'][1] = [ [ 'identifier' => 'domain', 'configuration' => 'https://example.com', ], [ 'identifier' => 'domain', 'configuration' => 'https://another-example.com', ], [ 'identifier' => 'sys_domain', ], [ 'identifier' => 'placeholder', ], [ 'identifier' => 'imagebuilder', 'configuration' => [ 'backgroundColor' => '#FFFFFF', 'textColor' => '#000000', ], ], [ 'identifier' => 'static', 'configuration' => [ 'path/to/example/file.txt' => 'Hello world!', 'another' => [ 'path' => [ 'to' => [ 'anotherFile.txt' => 'Lorem ipsum', '*.youtube' => 'yiJjpKzCVE4', ], '*' => 'This file was found in /another/path folder.', ], ], '*.vimeo' => '143018597', '*' => 'This is some static text for all other files.', ], ], ];
- 不需要配置您不希望使用的资源
- 配置中的顺序定义了处理顺序
资源
资源定义了filefill尝试从中获取缺少文件的位置(url/服务)。您可以使用多个资源来构建某种形式的回退链。
单个域名
从固定URL获取缺少的文件。
配置
- URL:输入一个有效的URL(包括http/https方案)
您可以在一个资源配置中输入多个单个域名。
域名记录
从所有可用的站点配置中获取缺少的文件。Filefill会遍历所有基本和变体URL,直到文件可以获取或处理完所有域名。
配置
- 不需要配置(复选框只是一个字段占位符)
不需要多次使用。默认情况下使用所有域名。
Placeholder.com
从placeholder.com服务获取缺少的图片。这会获取与原始文件分辨率正确的图片。
配置
- 不需要配置(复选框只是一个字段占位符)
不需要多次使用。此资源可以是链中的最后一个,但只能处理图像文件。
图像生成器
创建与原始文件分辨率正确的空图像。高度和宽度将作为文本层添加。
配置
- 背景颜色:输入有效的十六进制代码作为背景颜色
- 文字颜色:输入有效的十六进制代码作为文字颜色
静态文件
确保缺少的文件可用。默认情况下,将创建一个空文件。
配置
- 您可以通过路径或扩展名配置文件的内容
请使用TypoScript语法为记录配置。
path/to/example/file.txt = Hello world!
another {
path {
to {
anotherFile\.txt = Lorem ipsum
*\.youtube => yiJjpKzCVE4
}
* = This file was found in /another/path folder.
}
}
*\.vimeo = 143018597
* = This is some static text for all other files.
其他资源
您可以为从附加服务获取文件添加自己的资源处理器。
注册
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['filefill']['resourceHandler']['identifierName'] = [
'title' => 'Name of the resource',
'handler' => \Vendor\Extension\Resource\ResourceHandler::class,
'config' => [
'label' => 'Name of the resource',
'config' => [
'type' => 'check',
'default' => 1,
],
],
];
- 标题:作为后端(flex)按钮标签的资源名称
- 处理器:处理实际实现的类名称
- 配置:后端(flex)字段的TCA配置
处理器
namespace Vendor\Extension\Resource;
class ResourceHandler implements \IchHabRecht\Filefill\Resource\RemoteResourceInterface
{
public function hasFile($fileIdentifier, $filePath, FileInterface $fileObject = null)
{
return true;
}
public function getFile($fileIdentifier, $filePath, FileInterface $fileObject = null)
{
return 'file content';
}
}
处理器需要实现接口 \IchHabRecht\Filefill\Resource\RemoteResourceInterface
,因此必须添加 hasFile
和 getFile
两个函数。
调试
您可以通过配置filefill记录器来启用额外的日志信息。
$GLOBALS['TYPO3_CONF_VARS']['LOG']['IchHabRecht']['Filefill'] = [
'writerConfiguration' => [
\TYPO3\CMS\Core\Log\LogLevel::DEBUG => [
\TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
'logFileInfix' => 'filefill',
],
],
],
];
已知问题
1509741907 TYPO3Fluid\Fluid\Core\ViewHelper\Exception
文件夹 "[...]" 不存在。
Filefill尝试从任何资源获取现有文件。然而,由于FAL API,filefill无法防止或处理此异常。请尝试重新加载页面,该异常(针对此特定文件)不应再发生。请注意,可能存在针对新文件的新的异常。在这种情况下,您需要重新加载您的页面,直到所有文件都正确创建在您的当前系统上。
社区
- 感谢b13赞助本扩展的维护
- 感谢Wolfgang Wagner赞助本扩展的维护
- 感谢Marcus Schwemer在他的博客TYPO3worx上撰写有关filefill的文章
- 感谢Thomas Löffler作为赞助者提供的持续支持