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



我想问一下,在TYPO3 LTS 11中,是否有一种方法可以改变TYPO3为渲染图像生成名称的方式?

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

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

该图像有一个类似这样的名称:csm_my-image_88ade60319.jpg

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

例如"my-image_large.jpg">

文件名的cms_部分在TYPO3CMSCoreResourceProcessingImageCropScaleMaskTask::getTargetFileName函数中硬编码。最后的哈希值添加到TYPO3CMSCoreResourceProcessingAbstractGraphicalTask::getTargetFileName函数中。不确定为什么要添加cms_,但是散列是为了确保文件名是唯一的。哈希是使用文件和配置生成的。

所以默认情况下这是不可能的。如果你真的想要不同的文件名,你可以XCLASSTYPO3CMSCoreResourceProcessingImageCropScaleMaskTask,比如:

<?php
namespace VendorMyExtensionResourceProcessing;
class ImageCropScaleMaskTask extends TYPO3CMSCoreResourceProcessingImageCropScaleMaskTask
{
public function getTargetFileName()
{
$originalFileName = parent::getTargetFilename();
$fancyFileName = ... // Do your things to change the file name
return $fancyFileName;
}
}

您可能还需要添加一些内容来配置文件名。因此,您可能还需要XCLASSTYPO3CMSFluidViewHelpersImageViewHelper类或创建一个新的ViewHelper来为处理指令添加一些设置。

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