custom/plugins/zenitPlatformHorizon/src/Resources/views/storefront/element/cms-element-zen-teaser.html.twig line 1

Open in your IDE?
  1. {% block element_zen_teaser %}
  2.     {% set config = element.fieldConfig.elements %}
  3.     {% set customClasses = config.customClasses.value %}
  4.     {% set elemClasses = [] %}
  5.     {% set elemClasses = ['hover-text-' ~ config.textHover.value]|merge(elemClasses) %}
  6.     {% set elemClasses = ['hover-image-' ~ config.imageHover.value]|merge(elemClasses) %}
  7.     {% set textClasses = [] %}
  8.     {% set textClasses = ['zen-font-family-' ~ config.fontFamily.value]|merge(textClasses) %}
  9.     {% set animationClasses = [] %}
  10.     {% if config.animationIn.value != 'none' %}
  11.         {% set animationClasses = ['animation-in-' ~ config.animationIn.value]|merge(animationClasses) %}
  12.     {% endif %}
  13.     {% if config.animationOut.value != 'none' %}
  14.         {% set animationClasses = ['animation-out-' ~ config.animationOut.value]|merge(animationClasses) %}
  15.     {% endif %}
  16.     {% set elemStyles = { } %}
  17.     {% if config.imageBorderRadius.value %}
  18.         {% set elemStyles = elemStyles|merge({ 'border-radius': config.imageBorderRadiusTopLeft.value ~ ' ' ~ config.imageBorderRadiusTopRight.value ~ ' ' ~ config.imageBorderRadiusBottomRight.value ~ ' ' ~ config.imageBorderRadiusBottomLeft.value }) %}
  19.     {% endif %}
  20.     {% set imgStyles = { } %}
  21.     {% if config.imageBorderRadius.value %}
  22.         {% set imgStyles = imgStyles|merge({ 'border-radius': config.imageBorderRadiusTopLeft.value ~ ' ' ~ config.imageBorderRadiusTopRight.value ~ ' ' ~ config.imageBorderRadiusBottomRight.value ~ ' ' ~ config.imageBorderRadiusBottomLeft.value }) %}
  23.     {% endif %}
  24.     {% if config.overlay.value %}
  25.         {% set overlayStyles = {
  26.             'background-color': (config.overlayColor.value ?: 'transparent'),
  27.             'opacity': (config.overlayOpacity.value ?: '0%'),
  28.         } %}
  29.         {% if config.imageBorderRadius.value %}
  30.             {% set overlayStyles = overlayStyles|merge({ 'border-radius': config.imageBorderRadiusTopLeft.value ~ ' ' ~ config.imageBorderRadiusTopRight.value ~ ' ' ~ config.imageBorderRadiusBottomRight.value ~ ' ' ~ config.imageBorderRadiusBottomLeft.value }) %}
  31.         {% endif %}
  32.     {% endif %}
  33.     {% set textContainerStyles = {
  34.         'align-items': (config.verticalTextAlign.value ?: 'flex-start'),
  35.         'justify-content': (config.horizontalTextAlign.value ?: 'flex-start'),
  36.     } %}
  37.     {% set textStyles = { } %}
  38.     {% if config.textBorderRadius.value %}
  39.         {% set textStyles = textStyles|merge({ 'border-radius': config.textBorderRadiusTopLeft.value ~ ' ' ~ config.textBorderRadiusTopRight.value ~ ' ' ~ config.textBorderRadiusBottomRight.value ~ ' ' ~ config.textBorderRadiusBottomLeft.value }) %}
  40.     {% endif %}
  41.     {% if config.textPaddings.value %}
  42.         {% set textStyles = textStyles|merge({ 'padding': config.textPaddingTop.value ~ ' ' ~ config.textPaddingRight.value ~ ' ' ~ config.textPaddingBottom.value ~ ' ' ~ config.textPaddingLeft.value }) %}
  43.     {% endif %}
  44.     {% if config.textMargins.value %}
  45.         {% set textStyles = textStyles|merge({ 'margin': config.textMarginTop.value ~ ' ' ~ config.textMarginRight.value ~ ' ' ~ config.textMarginBottom.value ~ ' ' ~ config.textMarginLeft.value }) %}
  46.     {% endif %}
  47.     {% if config.textAlign.value %}
  48.         {% set textStyles = textStyles|merge({ 'text-align': config.textAlign.value }) %}
  49.     {% endif %}
  50.     {% if config.fontSize.value %}
  51.         {% set textStyles = textStyles|merge({ 'font-size': config.fontSize.value }) %}
  52.     {% endif %}
  53.     {% if config.fontWeight.value %}
  54.         {% set textStyles = textStyles|merge({ 'font-weight': config.fontWeight.value }) %}
  55.     {% endif %}
  56.     {% if config.color.value %}
  57.         {% set textStyles = textStyles|merge({ 'color': config.color.value }) %}
  58.     {% endif %}
  59.     {% if config.backgroundColor.value %}
  60.         {% set textStyles = textStyles|merge({ 'background-color': config.backgroundColor.value }) %}
  61.     {% endif %}
  62.     {% if config.textMinWidth.value %}
  63.         {% set textStyles = textStyles|merge({ 'width': config.textMinWidth.value }) %}
  64.     {% endif %}
  65.     {% if config.textMaxWidth.value %}
  66.         {% set textStyles = textStyles|merge({ 'max-width': config.textMaxWidth.value }) %}
  67.     {% endif %}
  68.     <style>
  69.         {% if elemStyles %}
  70.             .cms-element-{{ element.type }}-{{ element.id }} {
  71.                 {% for property, value in elemStyles %}
  72.                     {{ property }}: {{ value }};
  73.                 {% endfor %}
  74.             }
  75.         {% endif %}
  76.         {% if imgStyles %}
  77.             .cms-element-{{ element.type }}-{{ element.id }} .cms-teaser-image {
  78.                 {% for property, value in imgStyles %}
  79.                     {{ property }}: {{ value }};
  80.                 {% endfor %}
  81.             }
  82.         {% endif %}
  83.         {% if overlayStyles %}
  84.             .cms-element-{{ element.type }}-{{ element.id }} .cms-teaser-overlay {
  85.                 {% for property, value in overlayStyles %}
  86.                     {{ property }}: {{ value }};
  87.                 {% endfor %}
  88.             }
  89.         {% endif %}
  90.         {% if textContainerStyles %}
  91.             .cms-element-{{ element.type }}-{{ element.id }} .cms-teaser-text-container {
  92.                 {% for property, value in textContainerStyles %}
  93.                     {{ property }}: {{ value }};
  94.                 {% endfor %}
  95.             }
  96.         {% endif %}
  97.         {% if textStyles %}
  98.             .cms-element-{{ element.type }}-{{ element.id }} .cms-teaser-text {
  99.                 {% for property, value in textStyles %}
  100.                     {{ property }}: {{ value }};
  101.                 {% endfor %}
  102.             }
  103.         {% endif %}
  104.         .cms-element-{{ element.type }}-{{ element.id }} .icon-cms-teaser {
  105.             width: {{ config.fontSize.value }};
  106.             height: {{ config.fontSize.value }};
  107.             color: {{ config.color.value }};
  108.         }
  109.         .cms-element-{{ element.type }}-{{ element.id }}.hover-text-distance-arrow .cms-teaser-text-value {
  110.             padding-right: {{ config.fontSize.value }};
  111.         }
  112.         .cms-element-{{ element.type }}-{{ element.id }}.hover-text-distance-arrow:hover .cms-teaser-text-value {
  113.             padding-right: calc( {{ config.fontSize.value }} + 10px );
  114.         }
  115.         .cms-element-{{ element.type }}-{{ element.id }}.hover-text-distance-arrow .icon-cms-teaser {
  116.             left: calc(100% - {{ config.fontSize.value }} - {{ config.textPaddingRight.value }})
  117.         }
  118.         .cms-element-{{ element.type }}-{{ element.id }}.hover-text-show-arrow :hover .cms-teaser-text-value {
  119.             padding-right: {{ config.fontSize.value }};
  120.         }
  121.         .cms-element-{{ element.type }}-{{ element.id }}.hover-text-show-arrow:hover .icon-cms-teaser {
  122.             left: calc(100% - {{ config.fontSize.value }} - {{ config.textPaddingRight.value }})
  123.         }
  124.     </style>
  125.     {% block element_zen_teaser_element %}
  126.         <div class="cms-element-{{ element.type }} cms-element-{{ element.type }}-{{ element.id }}{% if config.verticalImageAlign.value %} has-vertical-alignment{% endif %} {{ elemClasses|sort|join(' ') }} {{ customClasses }}">
  127.             {% block element_zen_teaser_alignment %}
  128.                 {% if config.verticalImageAlign.value %}
  129.                     <div class="cms-element-alignment{% if config.verticalImageAlign.value == "center" %} align-self-center{% elseif config.verticalImageAlign.value == "flex-end" %} align-self-end{% else %} align-self-start{% endif %}">
  130.                 {% endif %}
  131.                 {% block element_zen_teaser_inner %}
  132.                     {% set imageElement %}
  133.                         {% block element_zen_teaser_container %}
  134.                             {% if element.data.media.url %}
  135.                                 <div class="cms-teaser-image-container is-{{ element.translated.config.displayMode.value }}"
  136.                                     {% if element.translated.config.minHeight.value and element.translated.config.displayMode.value == "cover" %} style="min-height: {{ element.translated.config.minHeight.value }};"{% endif %}>
  137.                                     {% block element_zen_teaser_media %}
  138.                                         {% set attributes = {
  139.                                             'class': 'cms-teaser-image',
  140.                                             'alt': (element.data.media.translated.alt ?: ''),
  141.                                             'title': (element.data.media.translated.title ?: '')
  142.                                         } %}
  143.                                         {% if element.translated.config.displayMode.value == 'cover' or element.translated.config.displayMode.value == 'contain' %}
  144.                                             {% set attributes = attributes|merge({ 'data-object-fit': element.translated.config.displayMode.value }) %}
  145.                                         {% endif %}
  146.                                         {% sw_thumbnails 'cms-image-thumbnails' with {
  147.                                             media: element.data.media
  148.                                         } %}
  149.                                     {% endblock %}
  150.                                 </div>
  151.                             {% endif %}
  152.                             <div class="cms-teaser-content-container {{ animationClasses|sort|join(' ') }}"
  153.                                  {% if config.animationIn.value != 'none' or config.animationOut.value != 'none' %}data-animation="true"{% endif %}
  154.                             >
  155.                                 {% if config.overlay.value %}
  156.                                     <div class="cms-teaser-overlay"></div>
  157.                                 {% endif %}
  158.                                 {% if config.text.value %}
  159.                                     {% set content = config.text.value|raw %}
  160.                                     <div class="cms-teaser-text-container">
  161.                                         <span class="cms-teaser-text {{ textClasses|sort|join(' ') }}">
  162.                                             <span class="cms-teaser-text-value">
  163.                                                 {% if config('zenitPlatformHorizon.config.twigStringLoaderExtension') %}
  164.                                                     {% sw_include '@zenitPlatformHorizon/storefront/utilities/zen-template-from-string.html.twig' with {
  165.                                                         content: content
  166.                                                     } only %}
  167.                                                 {% else %}
  168.                                                     {{ content|raw }}
  169.                                                 {% endif %}
  170.                                             </span>
  171.                                             {% if config.textHover.value == 'show-arrow' or config.textHover.value == 'distance-arrow' %}
  172.                                                 {% sw_icon 'arrow-medium-right' style { 'pack': 'solid', 'class': 'cms-teaser' } %}
  173.                                             {% endif %}
  174.                                         </span>
  175.                                     </div>
  176.                                 {% endif %}
  177.                             </div>
  178.                         {% endblock %}
  179.                     {% endset %}
  180.                     {% if element.translated.config.url.value %}
  181.                         <a href="{{ element.translated.config.url.value }}"
  182.                            class="cms-teaser-image-inner cms-teaser-image-link"
  183.                            {% if element.translated.config.newTab.value %}target="_blank" rel="noopener"{% endif %}>
  184.                             {{ imageElement }}
  185.                         </a>
  186.                     {% else %}
  187.                         <div class="cms-teaser-image-inner cms-teaser-image-no-link">
  188.                             {{ imageElement }}
  189.                         </div>
  190.                     {% endif %}
  191.                 {% endblock %}
  192.                 {% if config.verticalImageAlign.value %}
  193.                     </div>
  194.                 {% endif %}
  195.             {% endblock %}
  196.         </div>
  197.     {% endblock %}
  198. {% endblock %}