{# @sw-package framework #} {% block thumbnail_utility %} {# activate load per default. If it is not activated only a data-src is set instead of the src tag. #} {% if load is not defined %} {% set load = true %} {% endif %} {# By default no original image will be loaded as soon as thumbnails are available. #} {# When set to true the original image will be loaded when the viewport is greater than the largest available thumbnail. #} {% if loadOriginalImage is not defined %} {% set loadOriginalImage = false %} {% endif %} {# By default the srcset sizes will be calculated automatically if `columns` are present and no `sizes` are configured. #} {# When set to false the sizes attribute will not be generated automatically. #} {% if autoColumnSizes is not defined %} {% set autoColumnSizes = true %} {% endif %} {% if attributes is not defined %} {% set attributes = {} %} {% endif %} {% if attributes.alt is not defined and media.translated.alt is defined %} {% set attributes = attributes|merge({alt: media.translated.alt}) %} {% endif %} {% if attributes.title is not defined and media.translated.title is defined %} {% set attributes = attributes|merge({title: media.translated.title}) %} {% endif %} {# If no loading attribute is defined, use the default behaviour for images. #} {% if attributes.loading is not defined %} {% set attributes = attributes|merge({ loading: 'eager' }) %} {% endif %} {# uses cms block column count and all available thumbnails to determine the correct image size for the current viewport #} {% if media.thumbnails|length > 0 %} {% if autoColumnSizes and columns and sizes is not defined %} {# set image size for every viewport #} {% set sizes = { xs: (theme_config('breakpoint.sm') - 1) ~'px', sm: (theme_config('breakpoint.md') - 1) ~'px', md: ((theme_config('breakpoint.lg') - 1) / columns)|round(0, 'ceil') ~'px', lg: ((theme_config('breakpoint.xl') - 1) / columns)|round(0, 'ceil') ~'px' } %} {% if sizes is not defined or sizes == null %} {% set sizes = {} %} {% endif %} {# set image size for largest viewport depending on the cms block sizing mode (boxed or full-width) #} {% if layout == 'full-width' %} {% set container = 100 %} {% set sizes = sizes|merge({ xl: (container / columns)|round(0, 'ceil') ~'vw'}) %} {% else %} {% set container = 1360 %} {% set sizes = sizes|merge({ xl: (container / columns)|round(0, 'ceil') ~'px'}) %} {% endif %} {% endif %} {% set thumbnails = media.thumbnails|sort|reverse %} {# generate srcset with all available thumbnails #} {% set srcsetValues = [] %} {% if loadOriginalImage %} {% set srcsetValues = srcsetValues|merge([media|sw_encode_media_url ~ ' ' ~ (thumbnails|first.width + 1) ~ 'w']) %} {% endif %} {% for thumbnail in thumbnails %} {% set thumbnailUrl = thumbnail.url|sw_encode_url %} {% if feature('v6.8.0.0') %} {% set thumbnailUrl = thumbnail.url %} {% endif %} {% set srcsetValues = srcsetValues|merge([thumbnailUrl ~ ' ' ~ thumbnail.width ~ 'w']) %} {% endfor %} {# generate sizes #} {% set sizeFallback = 100 %} {# set largest size depending on column count of cms block #} {% if autoColumnSizes and columns %} {% set sizeFallback = (sizeFallback / columns)|round(0, 'ceil') %} {% endif %} {% set breakpoint = { xs: theme_config('breakpoint.xs'), sm: theme_config('breakpoint.sm'), md: theme_config('breakpoint.md'), lg: theme_config('breakpoint.lg'), xl: theme_config('breakpoint.xl') } %} {% set sizesValues = [] %} {% for key, value in breakpoint|reverse %} {% set sizesValues = sizesValues|merge(['(min-width: ' ~ value ~ 'px) ' ~ sizes[key]]) %} {% endfor %} {% set sizesValues = sizesValues|merge([sizeFallback ~ 'vw']) %} {% endif %} {% block thumbnail_utility_img %} 0 %} {% if load %}srcset="{{ srcsetValues|join(', ') }}" {% else %}data-srcset="{{ srcsetValues|join(', ') }}" {% endif %} {% if sizes['default'] %} sizes="{{ sizes['default'] }}" {% elseif sizes|length > 0 %} sizes="{{ sizesValues|join(', ') }}" {% endif %} {% endif %} {% for key, value in attributes %}{% if value != '' %} {{ key }}="{{ value|striptags|trim }}"{% elseif key == 'alt' and value is not same as(false) %} {{ key }}="{{ value|striptags|trim }}"{% endif %}{% endfor %} /> {% endblock %} {% endblock %}