TYPO3在流体模板中获取页面资源第一个父页面的媒体图像文件url

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

我尝试在流体模板中输出当前页面的父页面的页面属性选项卡“资源”媒体关系中引用的第一个图像。

我已获取父页面的 id 为

data.pid

具体来说,我想要图像的网址。

我已尝试

<f:image treatIdAsReference="1" src="{v:page.info(pageUid:\"{data.pid}\", field:\"media\")}" />
无济于事(得到TYPO3异常
No file reference (sys_file_reference) was found for given UID: "1"
)。我相信
media
字段只是添加关系数量的计数器。

我已经尝试了

{v:page.resources(uid: '{data.pid}') -> v:iterator.first() -> v:variable.set(name: 'image')}
的vhs ViewHelper,但生成的图像变量只是字符“1”,并且当传递给
f:image
时,会抛出“src必须是字符串或FileObject”的异常。

我知道 sys_file_reference 表,但当我知道页面 id 时,我没有找到预定义的流体模板平均值(例如 ViewHelper)来访问文件或文件引用的 uid。 sys_file_reference table snippet

顺便说一句:获取当前页面的页面属性选项卡“资源”第一个媒体关系图像文件网址的唯一方法是

{f:uri.image(src:"/fileadmin/{data_pageimage.0.originalFile.identifier}")}
。我通过 ViewHelper 尝试的所有其他方法,例如
f:uri.image
抱怨
src
不是引用(
treatIdAsReference
true),src 为
data.media
,或者某些
data_pageimage.0
子对象 id 的 getter 受到保护。

如果存在通过提供页面 id 和页面属性“文件字段”名称来获取图像 url 的通用方法(

og_image
也是如此),我会很高兴阅读它。

我们正在使用 TYPO3 12 LTS。

typo3 fluid view-helpers fal
1个回答
0
投票

看看FilesProcessor。它可以为您提供您想要在模板中使用的对象。

10 = FLUIDTEMPLATE
10 {
    # ... (your other stuff)

    # Before TYPO3 v12.1 you have to specify the fully-qualified class name of the processor
    # dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
    # Since TYPO3 v12.1 one can also use the available alias
    dataProcessing.10 = files
    dataProcessing.10 {
        as = mediaimages
        references.fieldName = media
        references.table = pages
    }
}

完成此准备工作后,您可以通过

{mediaimages}
和索引访问文件:

<f:image image='{mediaimages.0}' />
© www.soinside.com 2019 - 2024. All rights reserved.