Image rendering¶
FileUtility¶
The file rendering in EXT:headless
is handled by FileUtility
which renders the following JSON for each file:
"publicUrl": "https://www.example.org/fileadmin/_processed_/6/c/csm_my-image_51125112.jpg"
"properties": {
"mimeType": "image/jpeg",
"type": "image",
"filename": "csm_my-image_51125112.jpg",
"originalUrl": "https://www.example.org/fileadmin/my-image.jpg",
"uidLocal": "123",
"fileReferenceUid": "234",
"size": "50 KB",
"dimensions": {
"width": "300",
"height": "100",
},
"cropDimensions": {
"width": "300",
"height": "100",
},
"crop": { ... },
"autoplay": null,
"extension": null
}
EnrichFileDataEvent¶
FileUtility
is emitting the event EnrichFileDataEvent
for manipulating the properties
array.
To add a listener add this to your Configuration/Services.yaml
:
My\Extension\EventListener\TweakFileData:
tags:
- name: event.listener
identifier: 'tweak-file-data'
event: FriendsOfTYPO3\Headless\Event\EnrichFileDataEvent
FilesProcessor¶
headless
provides its own FilesProcessor
to render files.
Here's an example of how the og_image
of a page is being rendered via TypoScript:
lib.meta {
fields {
ogImage = TEXT
ogImage {
dataProcessing {
10 = FriendsOfTYPO3\Headless\DataProcessing\FilesProcessor
10 {
as = media
references.fieldName = og_image
processingConfiguration {
returnFlattenObject = 1
}
}
}
}
}
}
Configuration¶
The rendering configuration can be set via the property processingConfiguration
and provides the following sub-properties:
returnFlattenObject
: without that flag an array of (multiple) images is rendered. Set this if you're only rendering 1 image and want to reduce nesting.delayProcessing
: can be used to skip processing of images (and have them simply collected with theFilesProcessor
), in order to have them processed by the next processor in line (which is generallyGalleryProcessor
).fileExtension
: can be used to convert the images to any desired format, e.g.webp
.autogenerate
: *retina2x
: set this to render an additional image URI in high quality (200%). *lqip
: set this to render an additional image URI with low quality (10%).
GalleryProcessor¶
Configuration¶
The rendering configuration can be set directly. No processingConfiguration
property available!
maxGalleryWidth
: set to the core constant{$styles.content.textmedia.maxW}
maxGalleryWidthInText
: set to the core constant{$styles.content.textmedia.maxWInText}
columnSpacing
: set to the core constant{$styles.content.textmedia.columnSpacing}
borderWidth
: set to the core constant{$styles.content.textmedia.borderWidth}
borderPadding
: set to the core constant{$styles.content.textmedia.borderPadding}
autogenerate
*retina2x
*lqip