Zum Inhalt springen

Einzelnes Bild per Fluidtemplate rendern

Erstellt am 12. September 2018 · 3 Antworten · letzte Antwort am 15. Januar 2020

Tags: Fluid, Frage

Chrissli ·

Hallo Zusammen,

vielleicht kann mir einer weiterhelfen, da ich bisher alles über die "alten" Templates gelöst habe bin ich nicht ganz so firm was Fluidtemplates betrifft.

Ich habe ein Inhaltselement das im großen und ganzen die Darstellung und das Verhalten von textpic kopiert, sowohl im Backend als auch im Frontend.
Unterschied ist, das hier nur 1 Bild angezeigt werden soll, für den Fall, dass mehrere hinterlegt wären.
Mein Typoscript sieht so aus:

tt_content.singleimagetext = FLUIDTEMPLATE
tt_content.singleimagetext {
    templateRootPaths.0 = templates/Resources/Private/Templates/
    partialRootPaths.0 = templates/Resources/Private/Partials/
    layoutRootPaths.0 = templates/Resources/Private/Layouts/
    
    templateName = singleimagetext
    dataProcessing {
        10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
        10.references.fieldName = image        
        20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
    }    
}

Leider werden so immer alle Bilder angezeigt. Wie kann ich hier die Anzahl limitieren? Früher hätte ich mit FILES einfach maxItems=1 gesetzt, wo bzw. wie macht man das mit Fluid? Im Typoscript, als Parameter beim Processor oder im Template?

Niklas Lazinbee · · Beste Antwort

Im Fluid Template könnte das so funktionieren:

<f:for each="{images}" as="image" >
<f:if condition="{iterator.index} == 0">
<f:image src="{image.originalResource.publicUrl}" width="100"/>
</f:if>
</f:for>

Chrissli ·

Hallo Niklas

und vielen Dank für die Antwort!
Ich habe das noch nicht ausprobiert, da ich mir kurzfristig anderweitig helfen konnte, d.h. ohne Fluid sondern als Marker per TS gefüllt ( der klassische Weg ) mit FILES.

Deine Lösung klingt ( leider ) plausibel. Ich hatte gehofft es gibt hier eine Möglichkeit nur einzelne Einträge aus der DB zu laden, aber dann ist das halt so.

Julian.​Hofmann ·

Vom Dataprocessor bekommst Du ein nummerisches Array zurück. D.h. Du kannst auch direkt mit files.0 auf den ersten FileReference-Datensatz zugreifen (solltest Dir aber sicher sein, dass das Array auch immer mind. einen Datensatz enthält)