[TYPO3-german] Fluid cObject und IMAGE altText

Dr Dieter Porth typo3 at mobger.de
Sat Sep 12 13:56:03 CEST 2015


Am 11.9.2015 um 14:50 schrieb Andrea Schmuttermair:
> Hi,
>
> ich habe ein Fluid cObject, das die UID eines Bildes bekommt und damit
> ein Typoscript Bild rendert.
> Das funktioniert auch wunderbar, bis auf den altText und title.
> Hier steht in der Frontend-Ausgabe: Error: no file object
> Ich denke das hat was mit file.import.current zu tun... vermutlich ein
> Verständnisproblem der TS Syntax.
>
> Hier der Fluid Aufruf:
> <f:cObject typoscriptObjectPath="lib.responsiveImage" data="{image.uid}"
>> </f:cObject>
> Und das Typoscript:
> lib.responsiveImage = IMAGE
> lib.responsiveImage {
> 	file {
> 		import.current = 1
> 		treatIdAsReference = 1
> 	}
> 	altText = file:current:alternative
> 	titleText = file:current:title
>
> 	sourceCollection {
> 	    xlarge {
>               width = 5000m
>               srcsetCandidate = 5000w
>               mediaQuery = (min-width: 2001px)
>               dataKey = xlarge
>         }
>         large {
>               width = 2000m
>               srcsetCandidate = 2000w
>               mediaQuery = (min-width: 1024px) and (max-width: 2000)
>               dataKey = large
>         }
> 	    medium {
>               width = 1024
>               srcsetCandidate = 1024w
>               mediaQuery = (min-width: 769px) and (max-width: 1024)
>               dataKey = large
>         }
>         small {
>           width = 768
>           srcsetCandidate = 768w
>           mediaQuery = (max-width: 768px)
>           dataKey = small
>         }
>     }
> 	layout < tt_content.image.20.1.layout
> 	layoutKey = {$styles.content.imgtext.layoutKey}
> }
>
> Ergibt im Frontend:
>
> <img title="Error: no file object" alt="Error: no file object"
> srcset="/fileadmin/slider/Testslider_Bild.jpg
> 5000w,/fileadmin/_processed_/csm_Testslider_Bild_cb1125a3ed.jpg
> 2000w,/fileadmin/_processed_/csm_Testslider_Bild_1761a5fff8.jpg
> 1024w,/fileadmin/_processed_/csm_Testslider_Bild_52e34d3189.jpg 768w"
> src="/fileadmin/slider/Testslider_Bild.jpg" style="max-width: 100%; top:
> -5.36278%; left: 0px;">
>
> Debug vom Fluid image passt, {image.alternative} enthält den richtigen
> Alt-Text. Finde aber keine Möglichkeit das einfach ans cObject zu
> übergeben. Also muss ich es im cObject laden, oder?
> Mir reicht auch schon ne Idee wie ich da weiter komme, muss kein
> fertiges TS sein.
>
> LG Andrea
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Warum so kompliziert? Du hast doch schon das Image.-Objekt in deinem
Template.
cObject ist aus meiner Sicht der falsche Viewhelper 

Ersetze in deinem Endausdruck die Werte durch Object-Variablen, und du hast alles, was du willst.

<img 
title="Error: no file object" 
alt="Error: no file object"
srcset="/fileadmin/slider/Testslider_Bild.jpg
5000w,/fileadmin/_processed_/csm_Testslider_Bild_cb1125a3ed.jpg
2000w,/fileadmin/_processed_/csm_Testslider_Bild_1761a5fff8.jpg
1024w,/fileadmin/_processed_/csm_Testslider_Bild_52e34d3189.jpg 768w"
src="/fileadmin/slider/Testslider_Bild.jpg" 
style="max-width: 100%; top: -5.36278%; left: 0px;" />

===>

<img title="{image.title}" 
alt="{image.alternative}" 
srcset="{f:uri.image(src:'{image.uid}', width:'5000m'} 
5000w,{f:uri.image(src:'{image.uid}', width:'2000m'}
2000w,{f:uri.image(src:'{image.uid}', width:'1024m'}
1024w,{f:uri.image(src:'{image.uid}', width:'754m'} 768w"
src="{f:uri.image(src:'{image.uid}', width:'5000m'}" style="max-width: 100%; top:
-5.36278%; left: 0px;">

Um die Rendering-Zeiten zu optimieren, würde ich wahrscheinlich die vier Inline-Viewhelper durch einen eigenen Viewhelper ersetzen, der bei einem optionalen Parameter-Array das gesamte Image-Tag inklusive der n Images in einem Durchlauf generiert.

Dieter


 


-- 
Dr. Dieter Porth - 
Mein kleines TYPO3-Labor: http://www.mobger.de/



More information about the TYPO3-german mailing list