我们的TYPO3用户(编辑)需要将SVG文件交换/更新到TYPO3网站。 svg文件是可点击的,因此<img>
html标记对它们不起作用。我们决定支持<object>
代码,<img>
后备(Do I use <img>, <object>, or <embed> for SVG files?)。
前端的Fluid代码很容易生成普通的img标签:
<f:layout name="Default" />
<f:section name="main">
<div class="container">
<f:for each="{dce:fal(field:'image1', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<f:if condition="{iterator.isFirst}">
<f:image src="{fileReference.uid}" alt="" treatIdAsReference="1" />
</f:if>
</f:for>
</div>
</f:section>
但是,根据FluidTYPO3 vhs ViewHelper for SVG Images?,我可以使用这样的流体代码:
<img src="{f:uri.image(src: 'uploads/tx_myext/{imgIcon}')}">
适应对象的将是:
<object data="{f:uri.image(src: 'xxx')}" type="image/svg+xml">
<img src="{f:uri.image(src: 'xxx')}">
</object>
不幸的是,我不知道提供什么作为src。 {fileReference.uid}
仅插入文件的唯一ID(数字)。
如何将文件ID转换为图片的相对或绝对URI?
答案 0 :(得分:2)
我认为viewhelper属性 treatIdAsReference 正是您所寻找的。 f:图像以及f:uri:图像可以处理文件和文件参考。
看起来你有一个FileReference,所以你应该添加值为1的属性 以下是内联表示法的示例:
{f:uri.image(src: '{fileReference.uid}', treatIdAsReference:'1')}
结果是文件的路径,可以在常规的HTML标签中使用。