TYPO3 11.5.33
任务 我想在表格列中以逗号分隔的列表中显示 pdf 文件的每个类别标题。
我有
CType
= 上传的内容元素,里面有一个 sys_file_collection
表示包含 pdf 文件的文件夹。
我迭代 {files}
数组来创建一个包含列的表格,例如预览图标、文件标题、文件大小和分配给文件的类别。
<f:for each="{files}" as="file" iteration="fileIterator">
<!-- table code -->
</f:for>
例如:
Image | Title | Category | Filesize
preview pic PDF Title cat1, cat2 3 MB
preview pic PDF Title2 cat3 5 MB
除了类别的输出之外,一切正常。
如果我调试
{file}
数组,我会得到以下信息:
里面
metaDataAspect
有很多属性。
有
categories
但只有一个 integer
值,表示为该文件选择的类别数量。
在 Slack 频道中,我被告知
dataProcessor
最适合此用例,并被推荐使用此 https://docs.typo3.org/m/typo3/reference-typoscript/11.5/en-us/ContentObjects/ Fluidtemplate/DataProcessing/DatabaseQueryProcessor.html
花了一些时间之后,我不知道如何让它发挥作用。
我还发现了这个 WIP 任务 https://forge.typo3.org/issues/82010 | https://review.typo3.org/c/Packages/TYPO3.CMS/+/62123但它还没有完成,我也不确定这是否适用于文件。
这个问题真的没有开箱即用的解决方案吗?
有人已经遇到类似的问题并且可以帮助解决问题,或者是否有现有的 vhs viewhelper 用于此目的?
uploads
CE(内容元素)的输出在您的打字稿中配置于tt_content.uploads
。在那里您可以找到 FilesProcessor
,它提供了流体的文件数据列表。
正如您所注意到的,
category
字段只是按原样添加,而没有解析关系。
您可以/必须添加另一个处理器(
databaseProcessor
)来解决这些关系:
tt_content {
uploads {
dataProcessing {
10 {
dataProcessing [
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
10 {
if.isTrue.field = categories
table = sys_category
pidInList = root,-1
selectFields = sys_category.*
join = sys_category_record_mm ON sys_category_record_mm.uid_local = sys_category.uid
where.data = field:_ORIG_uid // field:uid
where.intval = 1
where.wrap = sys_category_record_mm.uid_foreign=|
orderBy = sys_category_record_mm.sorting_foreign
languageField = 0 # disable translation handling of sys_category
as = categoryList
}
}
}
}
}
}
在手册中,您可以找到一个
customCategoryProcessor
的示例,它可以完全解决您的问题。所需的 PHP 在 'TYPO3 解释'-手册中给出