templates/_parts/image/adaptive-image.html.twig line 1

Open in your IDE?
  1. {% set size = size|default('thumb') %}
  2. {% set classPicture = classPicture|default('') %}
  3. {% set class = class|default('') %}
  4. {% set alt = alt|default('') %}
  5. {% set field = field|default('imageFile') %}
  6. {% set query = query|default({
  7.     'x-large': '(min-width: 1500px)',
  8.     'large': '(min-width: 1200px) and (max-width: 1499)',
  9.     'medium': '(min-width: 768px) and (max-width: 1199px)',
  10.     'small': '(max-width: 767px)',
  11. })%}
  12. {% set object = object|default('') %}
  13. {% if not object %}
  14.     {% if app.environment == 'dev' %}
  15.         Не передан объект для получения изображения!
  16.     {% endif %}
  17. {% else %}
  18.     {% set configs = get_image_size_configs(size) %}
  19.     {% set image = vich_uploader_asset(object, field)  %}
  20.     <picture class="{{ classPicture }}">
  21.         {% set firstConfig = null %}
  22.         {% for queryName, mediaQuery in query %}
  23.             {% set configItem = configs[queryName]|default(null) %}
  24.             {% if configItem and not firstConfig %}
  25.                 {% set firstConfig = configItem %}
  26.             {% endif %}
  27.             {% set configItem2x = configs[queryName ~ '_2x']|default(null) %}
  28.             {% set configItemWebp = configs[queryName ~ '_webp']|default(null) %}
  29.             {% set configItemWebp2x = configs[queryName ~ '_webp_2x']|default(null) %}
  30.             {{ _self.pictureSource(image, configItemWebp, configItemWebp2x, mediaQuery, 'image/webp') }}
  31.             {{ _self.pictureSource(image, configItem, configItem2x, mediaQuery) }}
  32.         {% endfor %}
  33.         {# Привет, друг! Если ругается про filterSet и прочие странные шутки - почисти кеш :) #}
  34.         <img src="{{ image | imagine_filter(firstConfig.filter_set, firstConfig.filters) }}" alt="{{ alt }}" class="{{ class }}" loading="lazy"/>
  35.     </picture>
  36. {% endif %}
  37. {% macro pictureSource(image, config1x, config2x, mediaQuery, type) %}
  38.     {% if config1x and config2x %}
  39.         <source srcset="{{ image | imagine_filter(config1x.filter_set, config1x.filters) }} 1x,
  40.                     {{ image | imagine_filter(config2x.filter_set, config2x.filters) }} 2x"
  41.                 media="{{ mediaQuery }}"
  42.                 {% if type %}type="image/webp"{% endif %}>
  43.     {% endif %}
  44. {% endmacro %}