0

如何在尝试渲染之前使用 f:if 查看服务器上是否存在图像?

我尝试了以下方法但没有成功:

<f:if condition="fileadmin/bilder/Header/{data.title}.jpg">
    <f:then>
        <f:variable name="imageUri" value="fileadmin/bilder/Header/{data.title}.jpg" />
    </f:then>
    <f:else>
        <f:variable name="imageUri" value="fileadmin/bilder/Header/default.jpg" />
    </f:else>
</f:if>

{data.title} 工作正确。问题是我的条件不对。它永远不会去其他地方。可能我的情况是解释为字符串而不是源。

这里的描述没有帮助,因为我的图像在服务器上。 如果存在,在流体模板中渲染图像?

4

1 回答 1

1

首先,为什么在模板中的 fileadmin 中有一个硬编码的文件路径?这是非常罕见的,大多数时候你通过 TYPO3 有某种关系(例如,通过mediapages 表中的字段或类似的东西)。

如果这仍然是您需要的东西,您必须FileExistsViewHelper在使用之前编写一个检查文件是否存在的文件。这是有关如何编写自定义视图助手的文档:https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/8-Fluid/8-developing-a-custom-viewhelper。 您需要将文件名注册为参数,然后添加TYPO3registerArgument安装的路径(使其成为绝对路径)并使用file_exists. 扩展\TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper并实现该verdict方法。

您上面的模板只是创建了一个字符串(正如您已经猜到的)。

于 2019-10-21T11:40:50.053 回答