dev-master
9999999-devPackage that allows for rendering dynamic dummy images in the Neos backend.
GPL-3.0+
The Requires
- php ^7.1
- neos/neos ^3.3
Wallogit.com
2017 © Pedro Peláez
Package that allows for rendering dynamic dummy images in the Neos backend.
Package that allows for rendering dynamic dummy images in the Neos backend., (*1)
Do you use one of the many dummy image providers like dummyimage.com or lorempixel.com to render placeholder images in your Neos backend?, (*2)
If so this package might be useful to you:
It provides a custom DummyImage class implementing the Image and Asset interfaces of the Neos.Media package
allowing to use it as a replacement to render dynamic placeholder images that can be resized and cropped., (*3)
This is particularity useful when used in conjunction with Fusion., (*4)
You can easily install this package via composer:, (*5)
composer require wwwision/neos-dummyimage
someImage = Neos.Neos:ImageTag {
asset = Wwwision.Neos.DummyImage:DummyImage {
width = 600
height = 500
}
}
Will render an image like this:, (*6)
, (*7)
Resizing works just like with regular images:, (*8)
someImage = Neos.Neos:ImageTag {
asset = Wwwision.Neos.DummyImage:DummyImage {
width = 600
height = 500
}
maximumWidth = 500
maximumHeight = 450
}
, (*9)
..and so does cropping, (*10)
someImage = Neos.Neos:ImageTag {
asset = Wwwision.Neos.DummyImage:DummyImage {
width = 600
height = 500
}
width = 500
height = 450
allowCropping = true
}
, (*11)
This package can be used together with Atomic Fusion components
allowing them to centralize resizing/cropping logic.
An implementation of a ResponsiveImage atom could look something like this:, (*12)
prototype(Your.Package:Component.Atom.ResponsiveImage) < prototype(PackageFactory.AtomicFusion:Component) {
@styleguide {
title = 'Responsive Image'
description = 'Image with alternative sizes for different breakpoints'
props {
image = Wwwision.Neos.DummyImage:DummyImage {
width = 1000
height = 800
}
}
propSets {
'flexible width and height' {
width = 400
height = 350
altText = 'Lorem ipsum dolor'
allowCropping = true
responsiveImages = Neos.Fusion:RawArray {
large = Neos.Fusion:RawArray {
minWidth = 1025
imageWidth = 600
imageHeight = 500
}
medium = Neos.Fusion:RawArray {
minWidth = 769
imageWidth = 500
imageHeight = 420
}
}
}
'fixed height' {
width = 400
height = 350
allowCropping = true
responsiveImages = Neos.Fusion:RawArray {
large = Neos.Fusion:RawArray {
minWidth = 1025
imageWidth = 600
}
medium = Neos.Fusion:RawArray {
minWidth = 769
imageWidth = 500
}
}
}
'fixed width' {
width = 400
height = 350
allowCropping = true
responsiveImages = Neos.Fusion:RawArray {
large = Neos.Fusion:RawArray {
minWidth = 1025
imageHeight = 500
}
medium = Neos.Fusion:RawArray {
minWidth = 769
imageHeight = 420
}
}
}
}
}
# API
image = null
width = null
height = null
altText = null
allowCropping = true
responsiveImages = Neos.Fusion:RawArray
classNames = null
# /API
renderer.@context {
_sourceSets = Neos.Fusion:Collection {
collection = ${props.responsiveImages}
itemName = 'responsiveImage'
itemRenderer = Neos.Fusion:Value {
@context.responsiveImageUri = Neos.Neos:ImageUri {
asset = ${props.image}
width = ${responsiveImage.imageWidth ? responsiveImage.imageWidth : props.width}
height = ${responsiveImage.imageHeight ? responsiveImage.imageHeight : props.height}
allowCropping = ${props.allowCropping}
}
value = ${'<source srcset="' + responsiveImageUri + '" media="(min-width: ' + responsiveImage.minWidth + 'px)">'}
}
}
_defaultImageUri = Neos.Neos:ImageUri {
asset = ${props.image}
width = ${props.width}
height = ${props.height}
allowCropping = ${props.allowCropping}
}
}
renderer = afx`
<picture class={props.classNames}>
{_sourceSets}
<img srcset={_defaultImageUri} alt={props.altText} />
</picture>
`
}
Licensed under GPLv3+, see LICENSE, (*13)
Package that allows for rendering dynamic dummy images in the Neos backend.
GPL-3.0+