TYPO3:获取并显示fluid中的所有文件类别

问题描述 投票:0回答:1

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 用于此目的?

typo3 typoscript fluid
1个回答
0
投票

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 解释'-手册中给出

© www.soinside.com 2019 - 2024. All rights reserved.