1

我们的 TYPO3 用户(编辑)需要将 SVG 文件交换/更新到 TYPO3 网站。svg 文件是可点击的,因此<img>html 标记对它们不起作用。我们决定支持带有后备功能的<object>标签(我是否对 SVG 文件使用 <img>、<object> 或 <embed>?)。<img>

前端的 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?

4

1 回答 1

2

我认为 viewhelper 属性TreatIdAsReference是您正在寻找的。f:image 和 f:uri:image 可以处理文件和文件引用。

看起来你有一个 FileReference,所以你应该添加值为 1 的属性下面是一个使用内联表示法的示例:

{f:uri.image(src: '{fileReference.uid}', treatIdAsReference:'1')}

结果就是你的文件的路径,它可以用在常规的 HTML-Tags 中。

于 2016-12-29T13:14:20.577 回答