vendor/crehler/image-booster/src/Resources/views/storefront/utilities/thumbnail.html.twig line 1

Open in your IDE?
  1. {# uses cms block column count and all available thumbnails to determine the correct image size for the current viewport #}
  2. {% if media.thumbnails|length > 0 %}
  3.     {% if columns and sizes is not defined %}
  4.         {# set image size for every viewport #}
  5.         {% set sizes = {
  6.             'xs': (shopware.theme.breakpoint.sm - 1) ~'px',
  7.             'sm': (shopware.theme.breakpoint.md - 1) ~'px',
  8.             'md': ((shopware.theme.breakpoint.lg - 1) / columns)|round(0, 'ceil') ~'px',
  9.             'lg': ((shopware.theme.breakpoint.xl - 1) / columns)|round(0, 'ceil') ~'px'
  10.         } %}
  11.         {# set image size for largest viewport depending on the cms block sizing mode (boxed or full-width) #}
  12.         {% if layout == 'full-width' %}
  13.             {% set container = 100 %}
  14.             {% set sizes = sizes|merge({ 'xl': (container / columns)|round(0, 'ceil') ~'vw'}) %}
  15.         {% else %}
  16.             {% set container = 1360 %}
  17.             {% set sizes = sizes|merge({ 'xl': (container / columns)|round(0, 'ceil') ~'px'}) %}
  18.         {% endif %}
  19.     {% endif %}
  20.     
  21.     {% set boosters = media.extensions.mediaBoosters %}
  22.     {% if boosters.watermark %}
  23.         {% set thumbnails = boosters.watermarkThumbnails %}
  24.         {% set srcsetValue %}{% apply spaceless %}{{ boosters.watermark.generatedPath }} {{ thumbnails|first.width + 1 }}w,
  25.             {% for thumbnail in thumbnails %}
  26.                 {% if boosters.watermark.width > thumbnail.width %}
  27.                     {{ thumbnail.generatedPath | sw_encode_url }}
  28.                 {% else %}
  29.                     {{ boosters.watermark.generatedPath }}
  30.                 {% endif%}
  31.                 {{ thumbnail.width }}w
  32.                 {% if not loop.last %}, {% endif %}
  33.             {% endfor %}
  34.         {% endapply %}{% endset %}
  35.     {% else %}
  36.         {% set thumbnails = media.thumbnails %}
  37.         {% set srcsetValue %}{% apply spaceless %}{{ media|sw_encode_media_url }} {{ thumbnails|first.width + 1 }}w, {% for thumbnail in thumbnails %}{{ thumbnail.url | sw_encode_url }} {{ thumbnail.width }}w{% if not loop.last %}, {% endif %}{% endfor %}
  38.         {% endapply %}{% endset %}
  39.     {% endif %}
  40.     {% set srcsetValueWebP %}{% apply spaceless %}
  41.         {% if boosters.webpMedia %}
  42.             {{ boosters.webpMedia.generatedPath }} {{ thumbnails|first.width + 1 }}w,
  43.             {% for thumbnail in boosters.webpThumbnails %}
  44.                 {% if thumbnail.width < boosters.webpMedia.width %}{{ thumbnail.generatedPath | sw_encode_url }} {% else %}{{ boosters.webpMedia.generatedPath }}{% endif %}
  45.                 {{ thumbnail.width }}w{% if not loop.last %}, {% endif %}{% endfor %}
  46.         {% endif %}
  47.     {% endapply %}{% endset %}
  48.     {% set srcsetValueAvif %}{% apply spaceless %}
  49.         {% if boosters.avifMedia %}
  50.             {{ boosters.avifMedia.generatedPath }} {{ thumbnails|first.width + 1 }}w, {% for thumbnail in boosters.avifThumbnails %}
  51.             {% if thumbnail.width < boosters.avifMedia.width %}{{ thumbnail.generatedPath | sw_encode_url }} {% else %}{{ boosters.avifMedia.generatedPath }}{% endif %}
  52.             {{ thumbnail.width }}w{% if not loop.last %}, {% endif %}{% endfor %}
  53.         {% endif %}
  54.     {% endapply %}{% endset %}
  55.     {# generate sizes #}
  56.     {% set sizesValue %}{% apply spaceless %}
  57.         {% set sizeFallback = 100 %}
  58.         {# set largest size depending on column count of cms block #}
  59.         {% if columns %}
  60.             {% set sizeFallback = (sizeFallback / columns)|round(0, 'ceil') %}
  61.         {% endif %}
  62.         {% if thumbnails|first.width > shopware.theme.breakpoint|reverse|first %}
  63.             {% set maxWidth = thumbnails|first.width %}
  64.         {% endif %}
  65.         {% for key, value in shopware.theme.breakpoint|reverse %}{% if maxWidth %}(max-width: {{ maxWidth }}px) and {% endif %}(min-width: {{ value }}px) {{ sizes[key] }}{% set maxWidth = value-1 %}{% if not loop.last %}, {% endif %}{% endfor %}, {{ sizeFallback }}vw
  66.     {% endapply %}{% endset %}
  67. {% endif %}
  68. <picture media-id="{{ media.id }}">
  69.         {% set mediaUrlCalculated %}{% apply spaceless %}
  70.                 {% if media.extensions.mediaBoosters.watermark and media.extensions.mediaBoosters.watermark.generatedPath %}
  71.                     {{ media.extensions.mediaBoosters.watermark.generatedPath }}
  72.                 {% else %}
  73.                     {{ media|sw_encode_media_url }}
  74.                 {% endif %}
  75.             {% endapply %}{% endset %}
  76.     <source
  77.             srcset="{{ srcsetValueAvif }}"
  78.             {% if sizes['default'] %}
  79.                 sizes="{{ sizes['default'] }}"
  80.             {% elseif sizes|length > 0 %}
  81.                 sizes="{{ sizesValue }}"
  82.             {% endif %}
  83.             type="image/avif"
  84.     >
  85.     <source
  86.             srcset="{{ srcsetValueWebP }}"
  87.             {% if sizes['default'] %}
  88.                 sizes="{{ sizes['default'] }}"
  89.             {% elseif sizes|length > 0 %}
  90.                 sizes="{{ sizesValue }}"
  91.             {% endif %}
  92.             type="image/webp"
  93.     >
  94.     <img src="{{ mediaUrlCalculated }}"
  95.         {% if media.thumbnails|length > 0 %}
  96.          srcset="{{ srcsetValue }}"
  97.         {% if sizes['default'] %}
  98.          sizes="{{ sizes['default'] }}"
  99.         {% elseif sizes|length > 0 %}
  100.          sizes="{{ sizesValue }}"
  101.     {% endif %}
  102.     {% endif %}
  103.     {% for key, value in attributes %}{% if value != '' %} {{ key }}="{{ value }}"{% endif %}{% endfor %}
  104.     />
  105. </picture>