custom/plugins/SchilderSysteme/src/Resources/views/storefront/element/cms-element-image-gallery.html.twig line 1

Open in your IDE?
  1. {% extends "@Storefront/storefront/element/cms-element-image-gallery.html.twig" %}
  2. {% block element_image_gallery %}
  3.     {# cms element data and configs #}
  4.     {% if element.fieldConfig is defined and element.data is defined %}
  5.         {% set sliderConfig = element.fieldConfig.elements %}
  6.         {% set mediaItems = [] %}
  7.         {% for item in element.data.sliderItems|filter(el => el.media.fileExtension != 'pdf') %}
  8.             {% set mediaItems = mediaItems|merge([item.media]) %}
  9.         {% endfor %}
  10.         {% set zoom = sliderConfig.zoom.value %}
  11.         {% set gutter = sliderConfig.gutter.value %}
  12.         {% set magnifierOverGallery = true %}
  13.         {% set zoomModal = sliderConfig.fullScreen.value %}
  14.         {% set minHeight = sliderConfig.minHeight.value %}
  15.         {% set displayMode = sliderConfig.displayMode.value %}
  16.         {% set navigationArrows = sliderConfig.navigationArrows.value %}
  17.         {% set navigationDots = sliderConfig.navigationDots.value %}
  18.         {% set galleryPosition = sliderConfig.galleryPosition.value %}
  19.         {% set verticalAlign = sliderConfig.verticalAlign.value %}
  20.         {% set zoomImageContainerSelector = sliderConfig.zoomImageContainerSelector.value %}
  21.     {% endif %}
  22.     {% if fallbackImageTitle is not defined %}
  23.         {% set fallbackImageTitle = '' %}
  24.     {% endif %}
  25.     {# @var mediaItems \Shopware\Core\Content\Media\MediaCollection #}
  26.     {% set imageCount = mediaItems|length %}
  27.     {# too many underneath thumbs or slider dots make them hard to see #}
  28.     {% set maxItemsToShowMobileNav = 5 %}
  29.     {% set maxItemsToShowNav = 8 %}
  30.     {% set magnifierOptions = [] %}
  31.     {% if magnifierOverGallery %}
  32.         {% set magnifierOptions = magnifierOptions|merge({
  33.             'magnifierOverGallery': true,
  34.             'cursorType': 'crosshair'
  35.         }) %}
  36.     {% endif %}
  37.     {% if zoomImageContainerSelector %}
  38.         {% set magnifierOptions = magnifierOptions|merge({
  39.             'zoomImageContainerSelector': zoomImageContainerSelector
  40.         }) %}
  41.     {% endif %}
  42.     <div class="cms-element-{{ element.type }}{% if displayMode == "standard" and verticalAlign %} has-vertical-alignment{% endif %}">
  43.         {% block element_image_gallery_alignment %}
  44.             {% if config.verticalAlign.value %}
  45.                 <div class="cms-element-alignment{% if verticalAlign == "center" %} align-self-center{% elseif verticalAlign == "flex-end" %} align-self-end{% else %} align-self-start{% endif %}">
  46.             {% endif %}
  47.             {% set gallerySliderOptions = {
  48.                 slider: {
  49.                     navPosition: 'bottom',
  50.                     speed: 500,
  51.                     gutter: gutter ? gutter : 0,
  52.                     controls: navigationArrows ? true : false,
  53.                     autoHeight: false,
  54.                     startIndex: startIndexThumbnails ? startIndexThumbnails : null
  55.                 },
  56.                 thumbnailSlider: {
  57.                     items: (galleryPosition == "underneath") ? 6 : 5,
  58.                     slideBy: (galleryPosition == "underneath") ? 5 : 4,
  59.                     controls: true,
  60.                     startIndex: startIndexThumbnails ? startIndexThumbnails : null,
  61.                     responsive: {
  62.                         xs: {
  63.                             enabled: false,
  64.                             controls: false
  65.                         },
  66.                         sm: {
  67.                             enabled: false,
  68.                             controls: false
  69.                         }
  70.                     }
  71.                 }
  72.             } %}
  73.             {% if galleryPosition == "left" %}
  74.                 {% set gallerySliderOptions = gallerySliderOptions|replace_recursive({
  75.                     thumbnailSlider: {
  76.                         responsive: {
  77.                             md: {
  78.                                 axis: 'vertical'
  79.                             },
  80.                             lg: {
  81.                                 axis: 'vertical'
  82.                             },
  83.                             xl: {
  84.                                 axis: 'vertical'
  85.                             }
  86.                         }
  87.                     }
  88.                 }) %}
  89.             {% endif %}
  90.             {% block element_image_gallery_inner %}
  91.                 <div class="row gallery-slider-row{% if imageCount == 1 %} is-single-image{% else %} is-loading{% endif %} js-gallery-zoom-modal-container"
  92.                         {% if zoom %}
  93.                             data-magnifier="true"
  94.                         {% endif %}
  95.                         {% if magnifierOptions|length > 0 %}
  96.                             data-magnifier-options='{{ magnifierOptions|json_encode|raw }}'
  97.                         {% endif %}
  98.                         {% if imageCount > 1 %}
  99.                     data-gallery-slider="true"
  100.                     data-gallery-slider-options='{{ gallerySliderOptions|json_encode }}'
  101.                         {% endif %}>
  102.                     {% block element_image_gallery_inner_col %}
  103.                         <div class="gallery-slider-col{% if galleryPosition == "left" %} col order-1 order-md-2{% elseif galleryPosition == "underneath" %} col-12 order-1{% endif %}"
  104.                              {% if zoomModal %}data-zoom-modal="true"{% endif %}>
  105.                             {# option "magnifierOverGallery" shows zoom container over gallery #}
  106.                             <div class="base-slider gallery-slider{% if navigationArrows == "outside" %} has-nav-outside{% endif %}{% if navigationDots == "outside" %} has-dots-outside{% endif %}{% if magnifierOverGallery %} js-magnifier-zoom-image-container{% endif %}">
  107.                                 {% block element_image_gallery_inner_wrapper %}
  108.                                     {% if imageCount > 1 %}
  109.                                         {% block element_image_gallery_inner_multiple_slides %}
  110.                                             {% block element_image_gallery_inner_container %}
  111.                                                 <div class="gallery-slider-container"
  112.                                                      data-gallery-slider-container="true">
  113.                                                     {% block element_image_gallery_inner_items %}
  114.                                                         {% for image in mediaItems %}
  115.                                                             {% block element_image_gallery_inner_item %}
  116.                                                                 <div class="gallery-slider-item-container">
  117.                                                                     <div class="gallery-slider-item is-{{ displayMode }} js-magnifier-container"{% if minHeight and  (displayMode == "cover" or displayMode == "contain" ) %} style="min-height: {{ minHeight }}"{% endif %}>
  118.                                                                         {% set attributes = {
  119.                                                                             'class': 'img-fluid gallery-slider-image magnifier-image js-magnifier-image',
  120.                                                                             'alt': (image.translated.alt ?: fallbackImageTitle),
  121.                                                                             'title': (image.translated.title ?: fallbackImageTitle),
  122.                                                                             'data-full-image': image.url
  123.                                                                         } %}
  124.                                                                         {% if displayMode == 'cover' or displayMode == 'contain' %}
  125.                                                                             {% set attributes = attributes|merge({ 'data-object-fit': displayMode }) %}
  126.                                                                         {% endif %}
  127.                                                                         {% if isProduct %}
  128.                                                                             {% set attributes = attributes|merge({ 'itemprop': 'image' }) %}
  129.                                                                         {% endif %}
  130.                                                                         {% sw_thumbnails 'gallery-slider-image-thumbnails' with {
  131.                                                                             media: image
  132.                                                                         } %}
  133.                                                                     </div>
  134.                                                                 </div>
  135.                                                             {% endblock %}
  136.                                                         {% endfor %}
  137.                                                     {% endblock %}
  138.                                                 </div>
  139.                                             {% endblock %}
  140.                                             {% block element_image_gallery_inner_controls %}
  141.                                                 {% if navigationArrows %}
  142.                                                     <div class="gallery-slider-controls"
  143.                                                          data-gallery-slider-controls="{% if navigationArrows %}true{% else %}false{% endif %}">
  144.                                                         {% block element_image_gallery_inner_control_items %}
  145.                                                             {% block element_image_gallery_inner_control_prev %}
  146.                                                                 <button class="base-slider-controls-prev gallery-slider-controls-prev{% if navigationArrows == "outside" %} is-nav-prev-outside{% elseif navigationArrows == "inside" %} is-nav-prev-inside{% endif %}"
  147.                                                                         aria-label="{{ 'general.previous'|trans|striptags }}">
  148.                                                                     {% block element_image_gallery_inner_control_prev_icon %}
  149.                                                                         {% sw_icon 'arrow-head-left' %}
  150.                                                                     {% endblock %}
  151.                                                                 </button>
  152.                                                             {% endblock %}
  153.                                                             {% block element_image_gallery_inner_control_next %}
  154.                                                                 <button class="base-slider-controls-next gallery-slider-controls-next{% if navigationArrows == "outside" %} is-nav-next-outside{% elseif navigationArrows == "inside" %} is-nav-next-inside{% endif %}"
  155.                                                                         aria-label="{{ 'general.next'|trans|striptags }}">
  156.                                                                     {% block element_image_gallery_inner_control_next_icon %}
  157.                                                                         {% sw_icon 'arrow-head-right' %}
  158.                                                                     {% endblock %}
  159.                                                                 </button>
  160.                                                             {% endblock %}
  161.                                                         {% endblock %}
  162.                                                     </div>
  163.                                                 {% endif %}
  164.                                             {% endblock %}
  165.                                         {% endblock %}
  166.                                     {% else %}
  167.                                         {% block element_image_gallery_inner_single %}
  168.                                             <div class="gallery-slider-single-image is-{{ displayMode }} js-magnifier-container"{% if minHeight %} style="min-height: {{ minHeight }}"{% endif %}>
  169.                                                 {% if imageCount > 0 %}
  170.                                                     {% set attributes = {
  171.                                                         'class': 'img-fluid gallery-slider-image magnifier-image js-magnifier-image',
  172.                                                         'alt': (mediaItems|first.translated.alt ?: fallbackImageTitle),
  173.                                                         'title': (mediaItems|first.translated.title ?: fallbackImageTitle),
  174.                                                         'data-full-image': mediaItems|first.url
  175.                                                     } %}
  176.                                                     {% if displayMode == 'cover' or displayMode == 'contain' %}
  177.                                                         {% set attributes = attributes|merge({ 'data-object-fit': displayMode }) %}
  178.                                                     {% endif %}
  179.                                                     {% if isProduct %}
  180.                                                         {% set attributes = attributes|merge({ 'itemprop': 'image' }) %}
  181.                                                     {% endif %}
  182.                                                     {% sw_thumbnails 'gallery-slider-image-thumbnails' with {
  183.                                                         media: mediaItems|first,
  184.                                                     } %}
  185.                                                 {% else %}
  186.                                                     {% sw_icon 'placeholder' style {
  187.                                                         'size': 'fluid'
  188.                                                     } %}
  189.                                                 {% endif %}
  190.                                             </div>
  191.                                         {% endblock %}
  192.                                     {% endif %}
  193.                                 {% endblock %}
  194.                                 {% block element_image_gallery_slider_dots %}
  195.                                     {% if imageCount > 1 and navigationDots %}
  196.                                         <div class="base-slider-dots {% if imageCount > maxItemsToShowNav %} hide-dots{% elseif imageCount > maxItemsToShowMobileNav %} hide-dots-mobile{% endif %}">
  197.                                             {% block element_image_gallery_slider_dots_buttons %}
  198.                                                 {% for image in mediaItems %}
  199.                                                     {% block element_image_gallery_slider_dots_button %}
  200.                                                         <button class="base-slider-dot"
  201.                                                                 data-nav-dot="{{ loop.index }}"
  202.                                                                 tabindex="-1"></button>
  203.                                                     {% endblock %}
  204.                                                 {% endfor %}
  205.                                             {% endblock %}
  206.                                         </div>
  207.                                     {% endif %}
  208.                                 {% endblock %}
  209.                             </div>
  210.                         </div>
  211.                     {% endblock %}
  212.                     {% block element_image_gallery_inner_thumbnails_col %}
  213.                         {% if imageCount > 1 %}
  214.                             <div class="gallery-slider-thumbnails-col{% if galleryPosition == "left" %} col-0 col-md-auto order-2 order-md-1 is-left{% elseif galleryPosition == "underneath" %} col-12 order-2 is-underneath{% endif %}">
  215.                                 <div class="gallery-slider-thumbnails-container{% if galleryPosition == "underneath" %} is-underneath{% endif %}">
  216.                                     {% block element_image_gallery_inner_thumbnails %}
  217.                                         <div class="gallery-slider-thumbnails{% if galleryPosition == "underneath" %} is-underneath{% endif %}"
  218.                                              data-gallery-slider-thumbnails="true">
  219.                                             {% block element_image_gallery_inner_thumbnails_items %}
  220.                                                 {% for image in mediaItems %}
  221.                                                     {% block element_image_gallery_inner_thumbnails_item %}
  222.                                                         <div class="gallery-slider-thumbnails-item">
  223.                                                             {% block element_image_gallery_inner_thumbnails_item_inner %}
  224.                                                                 <div class="gallery-slider-thumbnails-item-inner">
  225.                                                                     {% set attributes = {
  226.                                                                         'class': 'gallery-slider-thumbnails-image',
  227.                                                                         'alt': (image.translated.alt ?: fallbackImageTitle),
  228.                                                                         'title': (image.translated.title ?: fallbackImageTitle)
  229.                                                                     } %}
  230.                                                                     {% if isProduct %}
  231.                                                                         {% set attributes = attributes|merge({ 'itemprop': 'image' }) %}
  232.                                                                     {% endif %}
  233.                                                                     {% sw_thumbnails 'gallery-slider-thumbnails-image-thumbnails' with {
  234.                                                                         media: image,
  235.                                                                         sizes: {
  236.                                                                             'default': '200px'
  237.                                                                         }
  238.                                                                     } %}
  239.                                                                 </div>
  240.                                                             {% endblock %}
  241.                                                         </div>
  242.                                                     {% endblock %}
  243.                                                 {% endfor %}
  244.                                             {% endblock %}
  245.                                         </div>
  246.                                     {% endblock %}
  247.                                     {% block element_image_gallery_inner_thumbnails_controls %}
  248.                                         <div data-thumbnail-slider-controls="true" class="gallery-slider-thumbnails-controls">
  249.                                             {% block element_image_gallery_inner_thumbnails_controls_prev %}
  250.                                                 <button class="base-slider-controls-prev gallery-slider-thumbnails-controls-prev">
  251.                                                     {% if galleryPosition == "left" %}
  252.                                                         {% sw_icon 'arrow-head-up' %}
  253.                                                     {% elseif galleryPosition == "underneath" %}
  254.                                                         {% sw_icon 'arrow-head-left' %}
  255.                                                     {% endif %}
  256.                                                 </button>
  257.                                             {% endblock %}
  258.                                             {% block element_image_gallery_inner_thumbnails_controls_next %}
  259.                                                 <button class="base-slider-controls-next gallery-slider-thumbnails-controls-next">
  260.                                                     {% if galleryPosition == "left" %}
  261.                                                         {% sw_icon 'arrow-head-down' %}
  262.                                                     {% elseif galleryPosition == "underneath" %}
  263.                                                         {% sw_icon 'arrow-head-right' %}
  264.                                                     {% endif %}
  265.                                                 </button>
  266.                                             {% endblock %}
  267.                                         </div>
  268.                                     {% endblock %}
  269.                                 </div>
  270.                             </div>
  271.                         {% endif %}
  272.                     {% endblock %}
  273.                     {% block element_image_gallery_inner_zoom_modal_wrapper %}
  274.                         {% if zoomModal %}
  275.                             <div class="zoom-modal-wrapper">
  276.                                 {% block element_image_gallery_inner_zoom_modal %}
  277.                                     <div class="modal is-fullscreen zoom-modal js-zoom-modal{% if imageCount is same as(1) %} no-thumbnails{% endif %}"
  278.                                          data-image-zoom-modal="true"
  279.                                          tabindex="-1"
  280.                                          role="dialog">
  281.                                         {% block element_image_gallery_inner_zoom_modal_dialog %}
  282.                                             <div class="modal-dialog"
  283.                                                  role="document">
  284.                                                 {% block element_image_gallery_inner_zoom_modal_content %}
  285.                                                     <div class="modal-content"{% if imageCount > 1 %} data-modal-gallery-slider="true"{% endif %}>
  286.                                                         {% block element_image_gallery_inner_zoom_modal_close_button %}
  287.                                                             <button type="button"
  288.                                                                     class="modal-close close"
  289.                                                                     data-dismiss="modal"
  290.                                                                     aria-label="Close">
  291.                                                                 {% block element_image_gallery_inner_zoom_modal_close_icon %}
  292.                                                                     <span aria-hidden="true">
  293.                                                                             {% sw_icon 'x' style { 'size': 'sm' } %}
  294.                                                                         </span>
  295.                                                                 {% endblock %}
  296.                                                             </button>
  297.                                                         {% endblock %}
  298.                                                         {% block element_image_gallery_inner_zoom_modal_body %}
  299.                                                             <div class="modal-body">
  300.                                                                 {% block element_image_gallery_inner_zoom_modal_action_buttons %}
  301.                                                                     <div class="zoom-modal-actions btn-group"
  302.                                                                          role="group"
  303.                                                                          aria-label="zoom actions">
  304.                                                                         {% block element_image_gallery_inner_zoom_modal_action_zoom_out %}
  305.                                                                             <button class="btn btn-light image-zoom-btn js-image-zoom-out">
  306.                                                                                 {% block element_image_gallery_inner_zoom_modal_action_zoom_out_icon %}
  307.                                                                                     {% sw_icon 'minus-circle' %}
  308.                                                                                 {% endblock %}
  309.                                                                             </button>
  310.                                                                         {% endblock %}
  311.                                                                         {% block element_image_gallery_inner_zoom_modal_action_zoom_reset %}
  312.                                                                             <buton class="btn btn-light image-zoom-btn js-image-zoom-reset">
  313.                                                                                 {% block element_image_gallery_inner_zoom_modal_action_zoom_reset_icon %}
  314.                                                                                     {% sw_icon 'screen-minimize' %}
  315.                                                                                 {% endblock %}
  316.                                                                             </buton>
  317.                                                                         {% endblock %}
  318.                                                                         {% block element_image_gallery_inner_zoom_modal_action_zoom_in %}
  319.                                                                             <button class="btn btn-light image-zoom-btn js-image-zoom-in">
  320.                                                                                 {% block element_image_gallery_inner_zoom_modal_action_zoom_in_icon %}
  321.                                                                                     {% sw_icon 'plus-circle' %}
  322.                                                                                 {% endblock %}
  323.                                                                             </button>
  324.                                                                         {% endblock %}
  325.                                                                     </div>
  326.                                                                 {% endblock %}
  327.                                                                 {% block element_image_gallery_inner_zoom_modal_slider %}
  328.                                                                     <div class="gallery-slider"
  329.                                                                          data-gallery-slider-container=true>
  330.                                                                         {% block element_image_gallery_inner_zoom_modal_slider_items %}
  331.                                                                             {% for image in mediaItems %}
  332.                                                                                 {% block element_image_gallery_inner_zoom_modal_slider_item %}
  333.                                                                                     <div class="gallery-slider-item">
  334.                                                                                         {% block element_image_gallery_inner_zoom_modal_slider_item_zoom_container %}
  335.                                                                                             <div class="image-zoom-container"
  336.                                                                                                  data-image-zoom="true">
  337.                                                                                                 {% block element_image_gallery_inner_zoom_modal_slider_item_image %}
  338.                                                                                                     {% sw_thumbnails 'gallery-slider-image-thumbnails' with {
  339.                                                                                                         media: image,
  340.                                                                                                         attributes: {
  341.                                                                                                             'class': 'gallery-slider-image js-image-zoom-element js-load-img',
  342.                                                                                                             'alt': (image.translated.alt ?: fallbackImageTitle),
  343.                                                                                                             'title': (image.translated.title ?: fallbackImageTitle)
  344.                                                                                                         },
  345.                                                                                                         load: false
  346.                                                                                                     } %}
  347.                                                                                                 {% endblock %}
  348.                                                                                             </div>
  349.                                                                                         {% endblock %}
  350.                                                                                     </div>
  351.                                                                                 {% endblock %}
  352.                                                                             {% endfor %}
  353.                                                                         {% endblock %}
  354.                                                                     </div>
  355.                                                                 {% endblock %}
  356.                                                                 {% block element_image_gallery_inner_zoom_modal_slider_controls %}
  357.                                                                     {% if imageCount > 1 %}
  358.                                                                         <div class="gallery-slider-controls"
  359.                                                                              data-gallery-slider-controls="true">
  360.                                                                             {% block element_image_gallery_inner_zoom_modal_slider_control_prev %}
  361.                                                                                 <button class="base-slider-controls-prev gallery-slider-controls-prev"
  362.                                                                                         aria-label="{{ 'general.previous'|trans|striptags }}">
  363.                                                                                     {% block element_image_gallery_inner_zoom_modal_slider_control_prev_icon %}
  364.                                                                                         {% sw_icon 'arrow-head-left' %}
  365.                                                                                     {% endblock %}
  366.                                                                                 </button>
  367.                                                                             {% endblock %}
  368.                                                                             {% block element_image_gallery_inner_zoom_modal_slider_control_next %}
  369.                                                                                 <button class="base-slider-controls-next gallery-slider-controls-next"
  370.                                                                                         aria-label="{{ 'general.next'|trans|striptags }}">
  371.                                                                                     {% block element_image_gallery_inner_zoom_modal_slider_control_next_icon %}
  372.                                                                                         {% sw_icon 'arrow-head-right' %}
  373.                                                                                     {% endblock %}
  374.                                                                                 </button>
  375.                                                                             {% endblock %}
  376.                                                                         </div>
  377.                                                                     {% endif %}
  378.                                                                 {% endblock %}
  379.                                                             </div>
  380.                                                         {% endblock %}
  381.                                                         {% if imageCount > 1 %}
  382.                                                             {% block element_image_gallery_inner_zoom_modal_footer %}
  383.                                                                 <div class="modal-footer">
  384.                                                                     {% block element_image_gallery_inner_zoom_modal_thumbnails_controls %}
  385.                                                                         <div class="gallery-slider-modal-controls">
  386.                                                                             <div data-thumbnail-slider-controls="true" class="gallery-slider-modal-thumbnails">
  387.                                                                                 <button class="base-slider-controls-prev gallery-slider-thumbnails-controls-prev"
  388.                                                                                         aria-label="{{ 'general.previous'|trans|striptags }}">
  389.                                                                                     {% sw_icon 'arrow-head-left' %}
  390.                                                                                 </button>
  391.                                                                                 <button class="base-slider-controls-next gallery-slider-thumbnails-controls-next"
  392.                                                                                         aria-label="{{ 'general.next'|trans|striptags }}">
  393.                                                                                     {% sw_icon 'arrow-head-right' %}
  394.                                                                                 </button>
  395.                                                                             </div>
  396.                                                                         </div>
  397.                                                                     {% endblock %}
  398.                                                                     {% block element_image_gallery_inner_zoom_modal_thumbnails %}
  399.                                                                         <div class="gallery-slider-thumbnails"
  400.                                                                              data-gallery-slider-thumbnails=true>
  401.                                                                             {% block element_image_gallery_inner_zoom_modal_thumbnails_items %}
  402.                                                                                 {% for image in mediaItems %}
  403.                                                                                     {% block element_image_gallery_inner_zoom_modal_thumbnails_item %}
  404.                                                                                         <div class="gallery-slider-thumbnails-item">
  405.                                                                                             {% block element_image_gallery_inner_zoom_modal_thumbnails_item_inner %}
  406.                                                                                                 <div class="gallery-slider-thumbnails-item-inner">
  407.                                                                                                     {% sw_thumbnails 'gallery-slider-thumbnails-image-thumbnails' with {
  408.                                                                                                         media: image,
  409.                                                                                                         sizes: {
  410.                                                                                                             'default': '200px'
  411.                                                                                                         },
  412.                                                                                                         attributes: {
  413.                                                                                                             'class': 'gallery-slider-thumbnails-image js-load-img',
  414.                                                                                                             'alt': (image.translated.alt ?: fallbackImageTitle),
  415.                                                                                                             'title': (image.translated.title ?: fallbackImageTitle)
  416.                                                                                                         },
  417.                                                                                                         load: false
  418.                                                                                                     } %}
  419.                                                                                                 </div>
  420.                                                                                             {% endblock %}
  421.                                                                                         </div>
  422.                                                                                     {% endblock %}
  423.                                                                                 {% endfor %}
  424.                                                                             {% endblock %}
  425.                                                                         </div>
  426.                                                                     {% endblock %}
  427.                                                                 </div>
  428.                                                             {% endblock %}
  429.                                                         {% endif %}
  430.                                                     </div>
  431.                                                 {% endblock %}
  432.                                             </div>
  433.                                         {% endblock %}
  434.                                     </div>
  435.                                 {% endblock %}
  436.                             </div>
  437.                         {% endif %}
  438.                     {% endblock %}
  439.                 </div>
  440.             {% endblock %}
  441.             {% if config.verticalAlign.value %}
  442.                 </div>
  443.             {% endif %}
  444.         {% endblock %}
  445.     </div>
  446. {% endblock %}