Как вывести размер связанного файла в шаблоне данных?
В жидком шаблоне я хотел бы вывести размер связанного файла.
Я использую f:link.page для ссылки на файл, так как я думаю, что это способ сделать это (пожалуйста, исправьте, если нет).
<f:link.page class="download" pageUid="fileadmin/redaktion/download/papers/{paper.download}" {paper.author}">PDF</f:link.page>
Поскольку я уже использую расширение ml_links на сайте, я подумал, что могу передать ссылку через lib.parseFunc_RTE, но
<f:format.html parseFuncTSPath="lib.parseFunc_RTE"><f:link.page class="download" pageUid="fileadmin/redaktion/download/papers/{paper.download}" {paper.author}">PDF</f:link.page></f:format.html>
просто оборачивает это в p.bodytext.
Нужно ли использовать другой синтаксис для применения f:format.html TO f:link.page - или есть лучший способ сделать это (через жидкий или vhs viewhelper)?
7 ответов
Когда я использую FluidContent, я установил расширение VHS, а затем просто использую:
<f:format.bytes decimals="1">{v:media.size(path: '{file}')}</f:format.bytes>
Это выводит чистые читаемые размеры как "28.2 МБ".
Самый простой способ — использовать собственный параметр TYPO3 FAL originalFile.size :
{audio.0.originalFile.size -> f:format.bytes()}}
Собственно VH - это самый быстрый способ добиться этого, то есть на основе этого VH вам придется заменить size
param с путем к файлу, а затем используйте ie filesize
функция PHP для извлечения размера в байтах.
Вот мой VH:
https://gist.github.com/ursbraem/9645542
Я немного упростил оригинал, вывод "KiB" для размера файла слишком технический для меня.
Если вы используете VHS, вы можете рассмотреть https://fluidtypo3.org/viewhelpers/vhs/master/Media/SizeViewHelper.html (в сочетании с f:format.bytes
).
В новых версиях TYPO3 вы можете использовать originalResource.size
атрибут объекта FileReference.
{file.originalResource.size -> f:format.bytes()}
или в вашем случае:
{paper.download.originalResource.size -> f:format.bytes()}
ТИПО3 10
Мне нужно было вывести размер файла для модуля DCE в TYPO3 10, вот что я придумал, используя VHS:
<f:format.bytes><v:media.size><v:format.trim characters="/"><f:uri.typolink parameter="{item.link}" /></v:format.trim></v:media.size></f:format.bytes>
Объяснение:
-
f:uri.typolink
генерирует полный путь, который мне нужен для - требуется путь без ведущей косой черты,
v:format.trim
удаляет этот символ. -
f:format.bytes
отображает вывод изv:media.size
в КБ или МБ.