TYPO3 DCE(流体):如何生成SVG对象而不是图像标签?

时间:2016-12-29 08:54:31

标签: html svg typo3 fluid dce

我们的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?

1 个答案:

答案 0 :(得分:2)

我认为viewhelper属性 treatIdAsReference 正是您所寻找的。 f:图像以及f:uri:图像可以处理文件和文件参考。

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

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

结果是文件的路径,可以在常规的HTML标签中使用。