Ich habe DCE für benutzerdefinierte Inhaltselemente installiert.Einzelne Datei in benutzerdefiniertem Inhaltselement mit DCE
Ich möchte einen ersten div-Tag bedingt gesetzt einschließlich des Dateinamens. Dies sollte es tun, aber es nicht - warum?
<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>
Was ich brauche:
I definiert eine FAL Eigenschaft in DCE und wenn eine Datei festgelegt wird, sollte die 'div'
<div class="element slide vertical-center picture" img-fill="FILEPATH" selectable>
sein, wenn nicht sollte es sein
<div class="element slide vertical-center" selectable>
Ich habe keine bessere Lösung als diese Struktur gefunden:
<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>
Ich fand schon die Inline-Notation
{f:if(condition:'{filepath} != EMTPY',then:' picture')}
Aber wie kann ich überprüfen, für LEER in Flüssigkeit?
{f:if(condition:'{filepath}',then:' picture')}
Als ich richtig Urs in den Kommentaren verstand.
Was vermisse ich?
Natürlich gibt es einen Weg, es zu tun. Haben Sie von der magischen Funktion f: debug und deren Möglichkeiten gehört, Ihnen zu zeigen, auf welche Variablen Sie in Ihrem Objekt Zugriff haben, außer auf uid, wenn sich Ihre Installation im Debug-Modus befindet? –
Natürlich, wie gesagt - ich habe das Filereferenz-Objekt gefunden. Und nun ja, da sind die gewünschten Eigenschaften, aber wie bekommt man sie in diese Umgebung? Inside 'f: for {... ganze Ansicht mit Dateireferenz erstellen ...}'? Nein, was, wenn kein Bild hochgeladen wurde? Zuerst 'f: for {... variable = filereference der ersten Datei ...}' dann Variable? Nein, f: Alias nur für Strings und innerhalb von f: Alias-Umgebung. Also, was würdest du tun? –
Ein paar Tipps: AFAIK, '{f: if (Bedingung: '{Dateipfad', dann: 'Bild')}' bedeutet bereits "wenn nicht leer". Wenn Sie auf das erste Element eines Arrays zugreifen wollen, ist '{files.0}' oft ausreichend.Und nicht zuletzt: DCE ist eine coole Lösung, aber wenn Sie nicht damit zufrieden sind, schauen Sie sich auch ext: mask an (es ist was ich benutze). – Urs