ichhabrecht/filefill

从不同的远程位置查找和获取缺少的本地文件

安装次数: 850,295

依赖项: 3

建议者: 0

安全性: 0

星标: 63

关注者: 7

分支: 33

开放性问题: 16

类型:typo3-cms-extension

4.3.2 2024-02-23 08:40 UTC

README

Latest Stable Version Build Status StyleCI

从不同的远程位置查找和获取缺少的本地文件。

曾经尝试从现有系统复制来设置新系统吗?怀疑所有文件(在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,因此必须添加 hasFilegetFile 两个函数。

调试

您可以通过配置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无法防止或处理此异常。请尝试重新加载页面,该异常(针对此特定文件)不应再发生。请注意,可能存在针对新文件的新的异常。在这种情况下,您需要重新加载您的页面,直到所有文件都正确创建在您的当前系统上。

社区