我尝试在流体模板中输出当前页面的父页面的页面属性选项卡“资源”媒体关系中引用的第一个图像。
我已获取父页面的 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。
顺便说一句:获取当前页面的页面属性选项卡“资源”第一个媒体关系图像文件网址的唯一方法是
{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。
看看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}' />