custom/plugins/zenitPlatformStratus/src/Resources/views/storefront/component/product/card/box.html.twig line 1

Open in your IDE?
  1. {% sw_extends '@Storefront/storefront/component/product/card/box.html.twig' %}
  2. {% block component_product_box_include %}
  3.     {# Includes a custom product-box template defined by the layout variable.
  4.        The standard template is used if no custom layout is set. #}
  5.     {% if layout is empty %}
  6.         {% set layout = 'standard' %}
  7.     {% endif %}
  8.     {# set fallback image size for every viewport #}
  9.     {% set sizes = {
  10.         'xs': '500px',
  11.         'sm': '315px',
  12.         'md': '390px',
  13.         'lg': '350px',
  14.         'xl': '280px'
  15.     } %}
  16.     {% if layout == 'image' %}
  17.         {% set sizes = {
  18.             'xs': '500px',
  19.             'sm': '500px',
  20.             'md': '390px',
  21.             'lg': '350px',
  22.             'xl': '280px'
  23.         } %}
  24.     {% endif %}
  25.     {# set custom image size for every viewport #}
  26.     {% if theme_config('zen-product-listing-card-img-sizes-custom') is same as true %}
  27.         {% set sizes = {
  28.             'xs': "#{theme_config('zen-product-listing-card-img-size-xs')}px",
  29.             'sm': "#{theme_config('zen-product-listing-card-img-size-sm')}px",
  30.             'md': "#{theme_config('zen-product-listing-card-img-size-md')}px",
  31.             'lg': "#{theme_config('zen-product-listing-card-img-size-lg')}px",
  32.             'xl': "#{theme_config('zen-product-listing-card-img-size-xl')}px",
  33.         } %}
  34.     {% elseif element.type is same as ('product-box') %}
  35.         {% set sizes = {
  36.             'xs': '500px',
  37.             'sm': '315px',
  38.             'md': '390px',
  39.             'lg': '350px',
  40.             'xl': '401px'
  41.         } %}
  42.     {% else %}
  43.         {# ... calculating the block margins #}
  44.         {% if block.marginLeft is empty or block.marginLeft is same as ('auto') %}
  45.             {% set blockMarginsMobile = (theme_config('zen-layout-container-spacing-left') * 0.5 + theme_config('zen-layout-container-spacing-right') * 0.5) > 40 ?: 40 %}
  46.             {% set blockMargins = theme_config('zen-layout-container-spacing-left') + theme_config('zen-layout-container-spacing-right') %}
  47.         {% else %}
  48.             {% set blockMarginsMobile = block.marginLeft|number_format + block.MarginRight|number_format %}
  49.             {% set blockMargins = blockMarginsMobile %}
  50.         {% endif %}
  51.         {# ... set the biggest possible container width
  52.             before next breakpoint e.g. 576 - 1 Pixel #}
  53.         {% set breakpointDownXS = (theme_config('breakpoint.sm') - 1) %}
  54.         {% set breakpointDownSM = (theme_config('breakpoint.md') - 1) %}
  55.         {% set breakpointDownMD = (theme_config('breakpoint.lg') - 1) %}
  56.         {% set breakpointDownLG = (theme_config('breakpoint.xl') - 1) %}
  57.         {% set breakpointDownXL = theme_config("zen-layout-container-width") ?: 1400 %}
  58.         {# ... sidebar sections #}
  59.         {% if section.type is same as ('sidebar') %}
  60.             {% set breakpointDownLG = breakpointDownLG * 0.666666666667 %}
  61.             {% set breakpointDownXL = breakpointDownXL * 0.75 %}
  62.         {% endif %}
  63.         {# ... calculate the available content widths from
  64.             breakpointDowns, blockMargins and layout paddings #}
  65.         {% set widthXS = breakpointDownXS - blockMarginsMobile - (theme_config('zen-layout-padding-left-mobile') * 0.25) - (theme_config('zen-layout-padding-right-mobile') * 0.25) %}
  66.         {% set widthSM = breakpointDownSM - blockMarginsMobile - (theme_config('zen-layout-padding-left-mobile') * 0.5) - (theme_config('zen-layout-padding-right-mobile') * 0.5) %}
  67.         {% set widthMD = breakpointDownMD - blockMarginsMobile - theme_config('zen-layout-padding-left-mobile') - theme_config('zen-layout-padding-right-mobile') %}
  68.         {% set widthLG = breakpointDownLG - blockMargins - (theme_config('zen-layout-padding-left') * 0.5) - (theme_config('zen-layout-padding-right') * 0.5) %}
  69.         {% set widthXL = breakpointDownXL - blockMargins %}
  70.         {# ... extra calculation for product sliders,
  71.             calculatings the cols for next calculation #}
  72.         {% if element.type is same as ('product-slider') and sliderConfig.elMinWidth.value %}
  73.             {% set colsXS = widthXS / (sliderConfig.elMinWidth.value|number_format + theme_config('zen-product-listing-card-padding')) %}
  74.             {% set colsSM = widthSM / (sliderConfig.elMinWidth.value|number_format + theme_config('zen-product-listing-card-padding')) %}
  75.             {% set colsMD = widthMD / (sliderConfig.elMinWidth.value|number_format + theme_config('zen-product-listing-card-padding')) %}
  76.             {% set colsLG = widthLG / (sliderConfig.elMinWidth.value|number_format + theme_config('zen-product-listing-card-padding')) %}
  77.             {% set colsXL = widthXL / (sliderConfig.elMinWidth.value|number_format + theme_config('zen-product-listing-card-padding')) %}
  78.         {% endif %}
  79.         {# Calculates sizes by configurated product listing columns or product slider min width.
  80.             Columns are set in cms-element-product-listing.html.twig or calculated above #}
  81.         {% if colsXS and colsSM and colsMD and colsLG and colsXL and theme_config('zen-product-listing-card-padding') %}
  82.             {% set sizeXS = widthXS / colsXS|round(0,'floor') - (theme_config('zen-product-listing-card-padding') * (colsXS - 1) / colsXS) %}
  83.             {% set sizeSM = widthSM / colsSM|round(0,'floor') - (theme_config('zen-product-listing-card-padding') * (colsSM - 1) / colsSM) %}
  84.             {% set sizeMD = widthMD / colsMD|round(0,'floor') - (theme_config('zen-product-listing-card-padding') * (colsMD - 1) / colsMD) %}
  85.             {% set sizeLG = widthLG / colsLG|round(0,'floor') - (theme_config('zen-product-listing-card-padding') * (colsLG - 1) / colsLG) %}
  86.             {% set sizeXL = widthXL / colsXL|round(0,'floor') - (theme_config('zen-product-listing-card-padding') * (colsXL - 1) / colsXL) %}
  87.             {# Consider portrait images, because the width of the thumbnail is less than the
  88.                 calculated thumbnail specification #}
  89.             {% set imageAspectRatio = theme_config('zen-product-listing-card-img-padding') / 100 %}
  90.             {% set imageHeight = theme_config('zen-product-listing-card-img-height')|intval %}
  91.             {% set imageWidth = theme_config('zen-product-listing-card-img-width')|intval %}
  92.             {% if imageHeight > 0 and imageWidth > 0 %}
  93.                 {% set imageAspectRatio = imageHeight / imageWidth %}
  94.             {% endif %}
  95.             {% if imageAspectRatio > 1 %}
  96.                 {% set sizeXS = sizeXS * imageAspectRatio %}
  97.                 {% set sizeSM = sizeSM * imageAspectRatio %}
  98.                 {% set sizeMD = sizeMD * imageAspectRatio %}
  99.                 {% set sizeLG = sizeLG * imageAspectRatio %}
  100.                 {% set sizeXL = sizeXL * imageAspectRatio %}
  101.             {% endif %}
  102.             {% set sizes = {
  103.                 'xs': "#{sizeXS}px",
  104.                 'sm': "#{sizeSM}px",
  105.                 'md': "#{sizeMD}px",
  106.                 'lg': "#{sizeLG}px",
  107.             } %}
  108.             {# ... set image size for largest viewport depending on the cms block sizing mode (boxed or full-width) #}
  109.             {% if section.sizingMode is same as ('full_width') %}
  110.                 {% set container = 100 %}
  111.                 {% set sizes = sizes|merge({ 'xl': (container / colsXL)|round(0, 'ceil') ~'vw'}) %}
  112.             {% else %}
  113.                 {% set sizes = sizes|merge({ 'xl': "#{sizeXL}px"}) %}
  114.             {% endif %}
  115.         {% endif %}
  116.     {% endif %}
  117.     {% if layout == 'standard' %}
  118.         {% sw_include "@Storefront/storefront/component/product/card/box-standard.html.twig" %}
  119.     {% elseif layout == 'image' %}
  120.         {% sw_include "@Storefront/storefront/component/product/card/box-image.html.twig" %}
  121.     {% elseif layout == 'minimal' %}
  122.         {% sw_include "@Storefront/storefront/component/product/card/box-minimal.html.twig" %}
  123.     {% elseif layout == 'wishlist' %}
  124.         {% sw_include "@Storefront/storefront/component/product/card/box-wishlist.html.twig" %}
  125.     {% else %}
  126.         {% set template = "@Storefront/storefront/component/product/card/box-" ~ layout ~ ".html.twig" %}
  127.         {% sw_include template ignore missing %}
  128.     {% endif %}
  129. {% endblock %}