渲染图像的 TYPO3 自定义文件名

TYPO3 Custom File Name for rendered images

我想问一下 TYPO3 LTS 11 是否可以更改 TYPO3 生成渲染图像名称的方式?

在模板中,我使用带有 cropVariant 选项的 f:image Viewhelper 来生成图像(由 TYPO3 Image Rendering 完成)。

<f:image image="{file}" cropVariant="desktop" />

该图像的名称类似于:csm_my-image_88ade60319.jpg

我可以定义 TYPO3 应该如何命名那些渲染图像吗?

例如“my-image_large.jpg”

文件名的 cms_ 部分在 TYPO3\CMS\Core\Resource\Processing\ImageCropScaleMaskTask::getTargetFileName 函数中被硬编码。最后的散列被添加到 TYPO3\CMS\Core\Resource\Processing\AbstractGraphicalTask::getTargetFileName 函数中。不确定为什么添加 cms_,但散列是为了确保文件名是唯一的。哈希是使用文件和配置生成的。

所以默认情况下是不可能的。如果你真的想要不同的文件名,你可以 XCLASS TYPO3\CMS\Core\Resource\Processing\ImageCropScaleMaskTask 像这样:

<?php
namespace Vendor\MyExtension\Resource\Processing;

class ImageCropScaleMaskTask extends \TYPO3\CMS\Core\Resource\Processing\ImageCropScaleMaskTask
{
    public function getTargetFileName()
    {
        $originalFileName = parent::getTargetFilename();
        $fancyFileName = ... // Do your things to change the file name
        return $fancyFileName;
    }
}

您可能还想添加一些内容来配置文件名应该是什么。因此,您可能还需要 XCLASS TYPO3\CMS\Fluid\ViewHelpers\ImageViewHelper class 或创建一个新的 ViewHelper 以向处理指令添加一些设置。

只需确保文件名是唯一的,否则您可能会得到奇怪的结果。