使用 DCE 的自定义内容元素中的单个文件
Single file in custom content element with DCE
我为自定义内容元素安装了 DCE。
我想要第一个 div 标签集,有条件地包括文件名。这应该可以,但不能 - 为什么?
<f:if condition="{f:count(subject: {dce:fal(field:'bgImage', contentObject:contentObject)})}==1">
<f:then>
<f:for each="{dce:fal(field:'image', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<f:if condition="{iterator.isFirst}">
<div class="element slide vertical-center picture{f:if(condition: '{field.isWhite} == 1', then: ' white')}" img-fill="{f:uri.image(src:'{fileReference.uid}',treatIdAsReference:'1')}" selectable>
</f:if>
</f:for>
</f:then>
<f:else>
<div class="element slide vertical-center{f:if(condition: '{field.isWhite} == 1', then: ' white')}" selectable>
</f:else>
</f:if>
我需要的:
我在DCE中定义了一个FAL属性,如果设置了一个文件,'div'应该是
<div class="element slide vertical-center picture" img-fill="FILEPATH" selectable>
如果不是,应该是
<div class="element slide vertical-center" selectable>
我没有找到比这个结构更好的解决方案:
<f:for each="{dce:fal(field:'image', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<f:if condition="{iterator.isFirst}">
<!-- render image by fileReference -->
</f:if>
</f:for>
我已经找到内联符号
{f:if(condition:'{filepath} != EMTPY',then:' picture')}
但是如何检查液体中是否为空?
{f:if(condition:'{filepath}',then:' picture')}
当我在评论中正确理解 Urs 时。
我错过了什么?
所以,你可以尝试这样的事情(我猜):
<div class="..." img-fill="<f:if condition="{dce:fal(field:'image', contentObject:contentObject)}">
<f:image image="{dce:fal(field:'image', contentObject:contentObject).0}" />
</f:if>
</f:for>">
... further content ...
</div>
尝试这样的事情,它对我有用。
<f:for each="{dce:fal(field:'fal', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<div class="element slide vertical-center {f:if(condition:'{fileReference.uid}',then:' picture')}">
<f:image src="{fileReference.uid}" alt="" treatIdAsReference="1" />
</div>
</f:for>
我自己找到了一个"solution":
<f:for each="{dce:fal(field:'bgImage', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<f:if condition="{iterator.isFirst}">
<div class="element slide vertical-center picture{f:if(condition: '{field.isWhite} == 1', then: ' white')}" img-fill-src="/fileadmin{fileReference.originalFile.identifier}">
</f:if>
</f:for>
<f:if condition="<f:count>{dce:fal(field:'bgImage', contentObject:contentObject)}</f:count> < 1">
<div class="element slide vertical-center{f:if(condition: '{field.isWhite} == 1', then: ' white')}">
</f:if>
真是一团糟。与 PHP 方法比较:
<? if (count($image_references) == 1): ?>
<div class="element slide vertical-center picture" img-fill-src="/fileadmin<? echo $file_references[0].originalFile.identifier; ?>">
<? else: ?>
<div class="element slide vertical-center">
<? endif; ?>
</div>
使用这种 Fluid 内容会产生极大的开销,因为毕竟您需要一个解析 Fluid 内容的解析器。此解析器再次用 PHP 编写,并且必须在整个前端执行。这意味着必须缓存所有内容。但是再次缓存不好。代码更简单。如果你学习流体,你就不能将它应用到其他地方,不像 PHP。
这个"Fluid"系统真是个糟糕的主意!
我为自定义内容元素安装了 DCE。
我想要第一个 div 标签集,有条件地包括文件名。这应该可以,但不能 - 为什么?
<f:if condition="{f:count(subject: {dce:fal(field:'bgImage', contentObject:contentObject)})}==1">
<f:then>
<f:for each="{dce:fal(field:'image', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<f:if condition="{iterator.isFirst}">
<div class="element slide vertical-center picture{f:if(condition: '{field.isWhite} == 1', then: ' white')}" img-fill="{f:uri.image(src:'{fileReference.uid}',treatIdAsReference:'1')}" selectable>
</f:if>
</f:for>
</f:then>
<f:else>
<div class="element slide vertical-center{f:if(condition: '{field.isWhite} == 1', then: ' white')}" selectable>
</f:else>
</f:if>
我需要的:
我在DCE中定义了一个FAL属性,如果设置了一个文件,'div'应该是
<div class="element slide vertical-center picture" img-fill="FILEPATH" selectable>
如果不是,应该是
<div class="element slide vertical-center" selectable>
我没有找到比这个结构更好的解决方案:
<f:for each="{dce:fal(field:'image', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<f:if condition="{iterator.isFirst}">
<!-- render image by fileReference -->
</f:if>
</f:for>
我已经找到内联符号
{f:if(condition:'{filepath} != EMTPY',then:' picture')}
但是如何检查液体中是否为空?
{f:if(condition:'{filepath}',then:' picture')}
当我在评论中正确理解 Urs 时。
我错过了什么?
所以,你可以尝试这样的事情(我猜):
<div class="..." img-fill="<f:if condition="{dce:fal(field:'image', contentObject:contentObject)}">
<f:image image="{dce:fal(field:'image', contentObject:contentObject).0}" />
</f:if>
</f:for>">
... further content ...
</div>
尝试这样的事情,它对我有用。
<f:for each="{dce:fal(field:'fal', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<div class="element slide vertical-center {f:if(condition:'{fileReference.uid}',then:' picture')}">
<f:image src="{fileReference.uid}" alt="" treatIdAsReference="1" />
</div>
</f:for>
我自己找到了一个"solution":
<f:for each="{dce:fal(field:'bgImage', contentObject:contentObject)}" as="fileReference" iteration="iterator">
<f:if condition="{iterator.isFirst}">
<div class="element slide vertical-center picture{f:if(condition: '{field.isWhite} == 1', then: ' white')}" img-fill-src="/fileadmin{fileReference.originalFile.identifier}">
</f:if>
</f:for>
<f:if condition="<f:count>{dce:fal(field:'bgImage', contentObject:contentObject)}</f:count> < 1">
<div class="element slide vertical-center{f:if(condition: '{field.isWhite} == 1', then: ' white')}">
</f:if>
真是一团糟。与 PHP 方法比较:
<? if (count($image_references) == 1): ?>
<div class="element slide vertical-center picture" img-fill-src="/fileadmin<? echo $file_references[0].originalFile.identifier; ?>">
<? else: ?>
<div class="element slide vertical-center">
<? endif; ?>
</div>
使用这种 Fluid 内容会产生极大的开销,因为毕竟您需要一个解析 Fluid 内容的解析器。此解析器再次用 PHP 编写,并且必须在整个前端执行。这意味着必须缓存所有内容。但是再次缓存不好。代码更简单。如果你学习流体,你就不能将它应用到其他地方,不像 PHP。
这个"Fluid"系统真是个糟糕的主意!