{% sw_extends '@Storefront/storefront/base.html.twig' %}
{# TODO: prüfen... #}
{# ---------------- START: SET TEMPLATE VARS ---------------- #}
{# ThemeWare: Set theme variables #}
{% set twtContainerLayout = theme_config('twt-container-layout') %}
{% set twtAdditionalJsFile = theme_config('twt-additional-js-file') %}
{% set twtAdditionalJsFileAsync = theme_config('twt-additional-js-file-async') %}
{% set twtAdditionalJsFileLoad = theme_config('twt-additional-js-file-load') %}
{% set twtAnnoncementBannerShow = theme_config('twt-annoncement-banner-show') %}
{% set twtBodyClass = theme_config('twt-body-class') %}
{% set twtBodyClassCmsPageId = theme_config('twt-body-class-cms-page-id') %}
{% set twtContainerLayout = theme_config('twt-container-layout') %}
{% set twtContainerMaxWidth = theme_config('twt-container-max-width') %}
{% set twtCustomJsCode = theme_config('twt-custom-js-code') %}
{% set twtExpertMode = theme_config('twt-expert-mode') %}
{% set twtFloatingWidgetAnimation = theme_config('twt-floating-widget-animation') %}
{% set twtFloatingWidgetBackdrop = theme_config('twt-floating-widget-backdrop') %}
{% set twtFloatingWidgetShow = theme_config('twt-floating-widget-show') %}
{% set twtFloatingWidgetShowOpened = theme_config('twt-floating-widget-show-opened') %}
{% set twtHeaderLogoType = theme_config('twt-header-logo-type') %}
{% set twtHeaderSearchType = theme_config('twt-header-search-type') %}
{% set twtHeaderType = theme_config('twt-header-type') %}
{% set twtLicensekey = theme_config('twt-footer-lizenzkey') %}
{% set twtShoppingExperiencesHeaderPosition = theme_config('twt-shopping-experiences-header-position') %}
{% set twtSlideoutCommunitiesShow = theme_config('twt-slideout-communities-show') %}
{% set twtStickyNavMainBreakpoint = theme_config('twt-sticky-nav-main-breakpoint') %}
{% set twtStickyNavMainCartShow = theme_config('twt-sticky-nav-main-cart-show') %}
{% set twtStickyNavMainLogoImage = theme_config('twt-sticky-nav-main-logo-image') %}
{% set twtStickyNavMainLogoShow = theme_config('twt-sticky-nav-main-logo-show') %}
{% set twtStickyNavMainScrollTop = theme_config('twt-sticky-nav-main-scroll-top') %}
{% set twtStickyNavMainSearchShow = theme_config('twt-sticky-nav-main-search-show') %}
{% set twtStickyNavMainShow = theme_config('twt-sticky-nav-main-show') %}
{% set twtStickyNavMainToggle = theme_config('twt-sticky-nav-main-toggle') %}
{% set twtStickyNavMainType = theme_config('twt-sticky-nav-main-type') %}
{% set twtHeaderPhoneFixed = theme_config('twt-header-phone-fixed') %}
{% set twtUspBarFooter = theme_config('twt-usp-bar-footer') %}
{% set twtUspBarFooterPosition = theme_config('twt-usp-bar-footer-position') %}
{% set twtUspBarHeader = theme_config('twt-usp-bar-header') %}
{% set twtUspBarHeaderPosition = theme_config('twt-usp-bar-header-position') %}
{# ---------------- END: SET TEMPLATE VARS ---------------- #}
{# ThemeWare: Set custom fields #}
{% set twtCustomFields = {
category: page.header.navigation.active.translated.customFields,
product: page.product.translated.customFields
} %}
{# ThemeWare: Set "Shopping Experiences Header" variable #}
{% set twtShoppingExperiencesHeader = false %}
{% if twtShoppingExperiencesHeaderPosition == 2 %}
{# ThemeWare: Allow "Shopping Experiences Header" on the home page or in listings via a custom-field #}
{% if controllerAction is same as('home') %}
{# ThemeWare: Allow "Shopping Experiences Header" on the home page #}
{% set twtShoppingExperiencesHeader = true %}
{% elseif controllerName|lower is same as('navigation') %}
{# ThemeWare: Allow "Shopping Experiences Header" in listing pages via a custom-field #}
{% if twtCustomFields.category.twt_clean_pro_custom_field__category__shopping_experiences_header is not empty and twtCustomFields.category.twt_clean_pro_custom_field__category__shopping_experiences_header == "1" %}
{% set twtShoppingExperiencesHeader = true %}
{% endif %}
{% endif %}
{% endif %}
{# TODO: prüfen... #}
{# TODO: Kommentare formatieren, Blöcke mit TW #}
{% block base_body_inner %}
{% set tcinn = true %}
{% if twtLicensekey %}
{% set twtLicensekeyValues = {} %}
{% for letter in 0..9 %}
{% set twtLicensekeyValues = twtLicensekeyValues|merge({
(letter): (loop.index + 47)
}) %}
{% endfor %}
{% for letter in 'A'..'Z' %}
{% set twtLicensekeyValues = twtLicensekeyValues|merge({
(letter): (loop.index + 64)
}) %}
{% endfor %}
{% for letter in 'a'..'z' %}
{% set twtLicensekeyValues = twtLicensekeyValues|merge({
(letter): (loop.index + 96)
}) %}
{% endfor %}
{% set twtLicensekeySum = 0 %}
{% for char in twtLicensekey|replace({'-': ''})|split('') %}
{% set twtLicensekeySum = (twtLicensekeySum + (twtLicensekeyValues[char] * (loop.index-1))) %}
{% endfor %}
{% if twtLicensekeySum == 11000 or (twtLicensekey starts with 'TL' and twtLicensekey|length == 16) %}
{% set tcinn = false %}
{% endif %}
{% endif %}
{# ThemeWare: Add additional wrapper in the body for boxed layouts #}
{% if twtContainerLayout == 3 %}
<div class="container body-container">{{ parent() }}</div>
{% else %}
{# Default block #}
{{ parent() }}
{% endif %}
{% endblock %}
{# ThemeWare: Set body classes (reverse order) #}
{% set bodyClasses = [] %}
{# ThemeWare: Apply category class #}
{% if twtCustomFields.category.twt_clean_pro_custom_field__category__body_class is not empty %}
{% set bodyClasses = [twtCustomFields.category.twt_clean_pro_custom_field__category__body_class|lower]|merge(bodyClasses) %}
{% endif %}
{# ThemeWare: Theme body class #}
{% if twtBodyClass and twtExpertMode == 2 %}
{% set bodyClasses = [twtBodyClass]|merge(bodyClasses) %}
{% endif %}
{# ThemeWare: Theme logged-in class #}
{% if context.customer is not empty %}{% set bodyClasses = ['twt-logged-in']|merge(bodyClasses) %}{% endif %}
{# ThemeWare: Add CMS-Page-ID #}
{% if page.cmsPage.type != NULL %}
{% if twtBodyClassCmsPageId == 2 %}
{% set bodyClasses = ['twt-cms-id-' ~ page.cmsPage.id]|merge(bodyClasses) %}
{% endif %}
{% if twtBodyClassCmsPageId == 3 %}
{% set bodyClasses = ['twt-cms-id-' ~ page.cmsPage.id|slice(0, 7)]|merge(bodyClasses) %}
{% endif %}
{% endif %}
{# ThemeWare: Add CMS-Pagetype #}
{% if page.cmsPage.type != NULL %}
{% set bodyClasses = ['twt-is-cms-' ~ page.cmsPage.type|replace({ "_":"-" })]|merge(bodyClasses) %}
{% endif %}
{# ThemeWare: Add container layout #}
{% if twtContainerLayout == 1 %}
{% set bodyClasses = ['twt-full-width']|merge(bodyClasses) %}
{% elseif twtContainerLayout == 2 %}
{% set bodyClasses = ['twt-full-width-boxed']|merge(bodyClasses) %}
{% elseif twtContainerLayout == 3 %}
{% set bodyClasses = ['twt-boxed']|merge(bodyClasses) %}
{% endif %}
{# ThemeWare: Apply "Shopping experience header" class #}
{% if twtShoppingExperiencesHeader %}
{% set bodyClasses = ['twt-shopping-experiences-header']|merge(bodyClasses) %}
{% endif %}
{# ThemeWare: Add header type #}
{% if twtHeaderType %}
{% set bodyClasses = ['twt-header-type-' ~ twtHeaderType]|merge(bodyClasses) %}
{% endif %}
{# ThemeWare: Theme variant class #}
{% set bodyClasses = ['twt-clean']|merge(bodyClasses) %}
{# ThemeWare: ThemeWare class #}
{% set bodyClasses = ['themeware']|merge(bodyClasses) %}
{# ThemeWare: Add body classes
- Replace: tab, new line, return, NUL-byte, vertical tab
#}
{% block base_body_classes %}{{ parent() }}{% apply replace({"\t":"", "\n":"", "\r":"", "\0":"", "\x0B":"", "\r\n":""}) %} {{ bodyClasses|join(' ') }}{% endapply %}{% endblock %}
{# ThemeWare: Add/change header #}
{% block base_header %}
{# ThemeWare: "Ankündigungsbanner" ergänzen. #}
{% if twtAnnoncementBannerShow > 1 %}
{% sw_include '@Storefront/storefront/themeware/extensions/twt-announcement-banner.html.twig' ignore missing with {
type: 'header',
alignment: 'top',
close: 'false'
} %}
{% endif %}
{# ThemeWare: "USP-Bar" über dem Header ergänzen. #}
{% if twtUspBarHeader > 1 and twtUspBarHeaderPosition == 1 %}
{% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
type: 'header',
alignment: 'top'
} %}
{% endif %}
{# Default block #}
{{ parent() }}
{# ThemeWare: "USP-Bar" über der Navigation ergänzen. #}
{% if twtUspBarHeader > 1 and twtUspBarHeaderPosition == 2 %}
{% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
type: 'header'
} %}
{% endif %}
{% endblock %}
{# ThemeWare: Adjustments on base footer #}
{% block base_footer %}
{# ThemeWare: "USP-Bar" über dem Footer ergänzen. #}
{% if twtUspBarFooter > 1 and twtUspBarFooterPosition == 1 %}
{% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
type: 'footer'
} %}
{% endif %}
{# Default block #}
{{ parent() }}
{# ThemeWare: "Slideout-Communities" zum Footer hinzufügen. #}
{# TODO: Add configuration #}
{% if twtSlideoutCommunitiesShow == 2 %}
{% sw_include '@Storefront/storefront/themeware/extensions/twt-slideout-communities.html.twig' ignore missing %}
{% endif %}
{# ThemeWare: "Floating-Widget" zum Footer hinzufügen. #}
{% if twtFloatingWidgetShow == 2 %}
{% sw_include '@Storefront/storefront/themeware/extensions/twt-floating-widget.html.twig' ignore missing with {
open: twtFloatingWidgetShowOpened,
animation: twtFloatingWidgetAnimation,
backdrop: twtFloatingWidgetBackdrop
} %}
{% endif %}
{% endblock %}
{# ThemeWare: Adjustments on the main navigation #}
{# TODO: Check compatibility #}
{% block base_navigation %}
{# ThemeWare: Block leeren wenn "Header 10" aktiv ist. Andernfalls werden Anpassungen für unsere Basis-Header vorgenommen. #customHeader #}
{% if twtHeaderType != 10 %}
{# ThemeWare: Add sticky data attribute #}
{% if twtStickyNavMainShow > 1 %}
{# ThemeWare: Set data only if sticky navigation is activated #}
<div class="nav-main">
{% block base_navigation_inner %}
<div class="container">
{# ThemeWare: Add sticky logo for sticky-navigation #}
{% if twtStickyNavMainLogoShow == 2 and twtStickyNavMainLogoImage %}
{% block layout_sticky_logo %}
<div id="sticky-logo" class="d-none">
<a class="sticky-logo-main-link" href="{{ path('frontend.home.page') }}" title="{{ "header.logoLink"|trans|striptags }}">
<picture>
{# Default logo #}
{% if twtHeaderLogoType != 2 %}
<img src="{{ twtStickyNavMainLogoImage |sw_encode_url }}" alt="{{ "header.logoLink"|trans|striptags }}" />
{% endif %}
{# ThemeWare: "Text-Logo" ergänzen. #}
{% block twt_layout_header_textlogo %}
{% if twtHeaderLogoType == 2 %}
{% sw_include '@Storefront/storefront/themeware/includes/twt-textlogo-include.html.twig' ignore missing with {
sticky: true
} %}
{% endif %}
{% endblock %}
</picture>
</a>
</div>
{% endblock %}
{% endif %}
{# ThemeWare: Add nav-main-toggle for sticky-navigation #}
{% if twtStickyNavMainToggle == 2 or twtStickyNavMainShow == 3 %}
{% block layout_sticky_navigation_toggle %}
<div id="sticky-nav-main-toggle" class="d-none">
<div class="menu-button">
<button class="btn nav-main-toggle-btn header-actions-btn" type="button" title="{{ "twt.header.offcanvasMenuText"|trans }}" data-offcanvas-menu="true" aria-label="{{ "general.menuLink"|trans|striptags }}">
{% sw_icon 'stack' %}
{# ThemeWare: Add label 'Navigation' to toggle-icon #}
<span class="header-nav-main-toggle-label">
{{ "twt.header.offcanvasMenuText"|trans }}
</span>
</button>
</div>
</div>
{% endblock %}
{% endif %}
{# ThemeWare: Add cart-button for sticky-navigation #}
{% if twtStickyNavMainCartShow == 2 %}
<span id="js-sticky-cart-position" class="d-none"></span>
{% endif %}
{# ThemeWare: Add search-button for sticky-navigation #}
{% if twtStickyNavMainSearchShow == 2 %}
<span id="js-sticky-search-position" class="d-none"></span>
{% endif %}
</div>
{# Default block #}
{{ parent() }}
{% endblock %}
</div>
{% else %}
{# Default block #}
{{ parent() }}
{% endif %}
{% endif %}
{# ThemeWare: Add elements after the main navigation #}
{# ThemeWare: New position for the search container with "Flyout search" (twt-header-search-type 2) or "Fullscreen search" (twt-header-search-type 4)
- "Flyout search" must be used in "Header 2.1" (twt-header-type 4)
#}
{% if twtHeaderSearchType == 2 or twtHeaderSearchType == 4 %}
{% block twt_layout_header_search_on_header %}
<div class="search-container">
{% sw_include '@Storefront/storefront/layout/header/search.html.twig' %}
</div>
{% endblock %}
{% endif %}
{# ThemeWare: "USP-Bar" unter dem Header hinzufügen. #}
{% if twtUspBarHeader > 1 and twtUspBarHeaderPosition == 3 %}
{% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
type: 'header',
alignment: 'top'
} %}
{% endif %}
{% endblock %}
{# ThemeWare: Adjustments on script block #}
{# TODO: Check with v6.5.0 #}
{% block base_body_script %}
{# ThemeWare: Add data atrributes (for ThemeWare exclusive elements) #}
<div id="twt-data-attributes" class="invisible d-none"
{% if twtShoppingExperiencesHeader %} {# "Erlebniswelt-Header" aktiv #}
data-twt-shopping-experiences-header="true"
{% endif %}
{% if twtStickyNavMainShow > 1 and twtHeaderType < 10 %} {# Top-Navigation ist sticky (nicht im Custom-Header) #}
data-twt-sticky-breakpoint="{{ twtStickyNavMainBreakpoint }}"
data-twt-sticky-cart="{{ twtStickyNavMainCartShow }}"
data-twt-sticky-container-width="{{ twtContainerMaxWidth }}"
data-twt-sticky-scroll-top="{{ twtStickyNavMainScrollTop }}"
data-twt-sticky-search="{{ twtStickyNavMainSearchShow }}"
data-twt-sticky-type="{{ twtStickyNavMainType }}"
{% endif %}
{% if twtStickyNavMainShow > 1 and twtHeaderType < 10 %} {# Mobile Header ist sticky (nicht im Custom-Header) #}
data-twt-mobile-sticky-header="{{ twtHeaderPhoneFixed }}"
{% endif %}
data-twt-search-type="{{ twtHeaderSearchType }}"
></div>
{# Default block #}
{{ parent() }}
{# ThemeWare: JavaScript ergänzen. #}
{% if twtCustomJsCode and twtExpertMode == 2 %}
<!-- Custom js code -->
{{ theme_config('twt-custom-js-code') | raw }}
{% endif %}
{# ThemeWare: JS-Datei ergänzen. #}
{% if twtAdditionalJsFile and twtAdditionalJsFileLoad == 2 and twtExpertMode == 2 %}
<!-- Custom js file -->
<script type="text/javascript" src="{{ twtAdditionalJsFile }}" crossorigin="anonymous"{% if twtAdditionalJsFileAsync == 2 %} async{% endif %}></script>
{% endif %}
{% endblock %}