Текущий шаблон: отображать изображение, только если оно существует - PullRequest
0 голосов
/ 21 октября 2019

Как я могу использовать f: если посмотреть, существует ли изображение на сервере перед попыткой его визуализации?

Я безуспешно пробовал следующее:

<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} работает коррект. Проблема в том, что мое состояние не так. Это никогда не идет к остальному. Возможно, мое состояние интерпретируется как строка, а не как источник.

Описание здесь не помогает, потому что мой образ находится на сервере. Сделать изображение в шаблоне флюида, если оно существует?

1 Ответ

0 голосов
/ 21 октября 2019

Прежде всего, почему у вас есть жестко заданный путь к файлу в fileadmin в шаблоне? Это очень редко, в большинстве случаев у вас есть какая-то связь через TYPO3 (например, через поле media в таблице страниц или что-то в этом роде).

Если это все еще то, что вам нужно, вы 'Я должен написать FileExistsViewHelper, который проверяет, существует ли файл перед его использованием. Вот документация о том, как написать пользовательский помощник вида: https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/8-Fluid/8-developing-a-custom-viewhelper.html Вам нужно зарегистрировать свое имя файла в качестве аргумента с помощью registerArgument, а затем добавить путь к установке TYPO3 (чтобы сделать его абсолютным путем)и проверьте этот файл с file_exists. Расширение от \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper и реализация метода verdict.

Ваш шаблон выше просто создает строку (как вы уже догадались).

...