<!DOCTYPE html>
<html {% if 'html_lang_param' != 'html_lang_param'|trans %}lang="{{ 'html_lang_param'|trans }}" {% endif %}>
{% set isIE = 'Trident' in app.request.headers.get('User-Agent') or 'MSIE' in app.request.headers.get('User-Agent') %}
{% set isPunchout = (app.request.cookies.get("isPunchout") == "oci" or app.request.cookies.get("isPunchout") == "cxml") %}
{% set categoryTree = getCategoryTree() %}
<head>
{% block gtmDataLayer %}
{% include('components/atoms/gtm-data-layer/gtm-data-layer.html.twig') %}
{% endblock %}
{% block globalJavaScript %}
{% if not app.getRequest().attributes.get('storyblok_preview') and not isPunchout %}
{% if ("C0002:1" in app.request.cookies.get("OptanonConsent")|default) %}
<script type="text/javascript">
{# Start VWO Async SmartCode #}
window._vwo_code = window._vwo_code || (function(){
var account_id=609860,
settings_tolerance=1500,
library_tolerance=2000,
use_existing_jquery=false,
is_spa=1,
hide_element='body',
/* DO NOT EDIT BELOW THIS LINE */
f=false,d=document,code={use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){
window.settings_timer=setTimeout(function () {_vwo_code.finish() },settings_tolerance);var a=d.createElement('style'),b=hide_element?hide_element+'{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}':'',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);this.load('https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&f='+(+is_spa)+'&r='+Math.random());return settings_timer; }};window._vwo_settings_timer = code.init(); return code; }());
{# End VWO Async SmartCode #}
</script>
{% endif %}
<!-- OneTrust Cookies Consent Notice -->
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js"
data-document-language="true"
type="text/javascript"
charset="UTF-8"
data-domain-script="{{ 'cookie_consent_domain_id'|trans }}{% if app.environment != 'prod' %}-test{% endif %}" >
</script>
<script type="text/javascript">
function OptanonWrapper() {
if (OnetrustActiveGroups.indexOf('C0002') != -1) {
gtag('consent', 'update', {'analytics_storage': 'granted'})
};
if (OnetrustActiveGroups.indexOf('C0003') != -1) {
window.emos3.send({'privacy_mode': 3});
}else {
window.emos3.send({'privacy_mode': 'reset'});
}
if (OnetrustActiveGroups.indexOf('C0004') != -1) {
gtag('consent', 'update', {'ad_storage': 'granted'})
gtag('consent', 'update', {'ad_user_data': 'granted'});
gtag('consent', 'update', {'ad_personalization': 'granted'});
};
window.emos3InitialSend();
}
</script>
{% endif %}
{% include('components/atoms/global-java-script/global-java-script.html.twig') %}
<script src="https://integrations.etrusted.com/applications/widget.js/v2" defer async></script>
{% endblock %}
{% block gtm %}
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','{% if isPunchout %}{{ 'gtm_id_oci'|trans }}{% else %}{{ 'gtm_id'|trans }}{% endif %}');</script>
<!-- End Google Tag Manager -->
{% endblock %}
{% block meta %}
{% include 'components/organisms/meta/meta.html.twig' %}
{% endblock %}
{% block openGraph %}
{% include 'components/organisms/open-graph/open-graph.html.twig' %}
{% endblock %}
{% block favicon %}
{% include 'components/organisms/favicon/favicon.html.twig' %}
{% endblock %}
<title>{% block title %}{{ metaInformation.title|default('meta_title_default'|trans) }}{% endblock %}</title>
{% block stylesheets %}
{{ encore_entry_link_tags('vendor') }}
{{ encore_entry_link_tags('app') }}
{% endblock %}
<link rel="preconnect" href="//widgets.crosssell.info">
<link rel="preconnect" href="//cdn.cookielaw.org">
<link rel="preconnect" href="//in.hotjar.com">
</head>
<body>
{% block gtmNoScript %}
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id={{ 'gtm_id'|trans }}" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
{% endblock %}
{% block econdaTracing %}
{% include('components/atoms/econda-tracking/econda-tracking.html.twig')%}
{% endblock %}
{% include 'components/atoms/page-loader/page-loader.html.twig' %}
{% set hotlineType = 'is--company' %}
{% if breadcrumbs is defined and breadcrumbs is iterable%}
{% if breadcrumbs|last['branch']|default == 'cp' %}
{% set hotlineType = 'is--cp' %}
{% elseif breadcrumbs|last['branch']|default == 'company' %}
{% set hotlineType = 'is--company' %}
{% elseif breadcrumbs|last['branch']|default == 'engineered-solutions' %}
{% set hotlineType = 'is--es' %}
{% endif %}
{% endif %}
<div id="app" class="{{ hotlineType }}">
<div class="app__inner">
{% block body %}
<to-the-top></to-the-top>
{% block flash_messages %}
{% include 'components/atoms/toast/toast.html.twig' %}
{% endblock %}
{% block header %}
{{ include('components/organisms/header/header.html.twig') }}
{% endblock %}
{% block breadcrumb %}
{% include('components/molecules/breadcrumb/breadcrumb.html.twig') %}
{% endblock %}
<main>
{% block content %}{% endblock %}
</main>
{% block footer %}
{% include 'components/organisms/footer/footer.html.twig' %}
{% endblock %}
{% block offcanvas %}
{% block offcanvasMobileMenu %}
{% include 'components/organisms/vertical-menu/vertical-menu.html.twig' %}
{% endblock %}
{% block offcanvasAccountMenu %}
{% embed 'components/organisms/offside/offside.html.twig' with {
'id': 'accountMenu',
'header': 'offcanvas_account_menu_headline'|trans,
'aria-labeldby': 'offcanvas_account_menu_headline'|trans,
} %}
{% block offcanvasContent %}
{% include 'components/organisms/offcanvas-account/offcanvas-account.html.twig' %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block offcanvasCart %}
{% endblock %}
{% endblock %}
{% endblock %}
{% block modal %}
{% endblock %}
{% if cms_globals.slot_sticky_banner is defined %}
{% set stickyBanner %}
{% include 'components/organisms/storyblok/storyblok.html.twig' with {
'componentData': cms_globals.slot_sticky_banner
} %}
{% endset %}
{{ setPageEndHtml('sticky-banner', stickyBanner) }}
{% endif %}
</div>
{{ getPageEndHtml() }}
</div>
{% block javascripts %}
{% include('components/molecules/breadcrumb/breadcrumb-schema.html.twig') %}
{% if app.getRequest().attributes.get('storyblok_preview') %}
<script src="//app.storyblok.com/f/storyblok-v2-latest.js" defer></script>
<script>
window.addEventListener('load', function() {
const storyblokInstance = new window.StoryblokBridge()
storyblokInstance.on(['change', 'published'], function() {
window.location.reload();
});
});
</script>
{% endif %}
<script type="text/javascript" defer="defer" src="https://l.ecn-ldr.de/loader/loader.js" client-key="00002954-63be81d4-fc18-3e36-996c-72cbbe3e697d" container-id="5937"></script>
<script>
{% set jsTranslations = {
'form_transmission_error': 'form_transmission_error'|trans,
'line_item_subtotal': 'line_item_subtotal'|trans,
'line_item_voucher': 'line_item_voucher'|trans,
'line_item_shipping': 'line_item_shipping'|trans,
'line_item_shipping_free': 'line_item_shipping_free'|trans,
'line_item_tax': 'line_item_tax'|trans,
'line_item_tax_info': 'line_item_tax_info'|transFallbackEmptyText,
'line_item_sum': 'line_item_sum'|trans,
'direct_order_search_placeholder': 'direct_order_search_placeholder'|trans,
'add': 'add'|trans,
'service_url_denios_assets':'image_service_url_denios_assets'|trans,
'service_url_storyblok':'image_service_url_storyblok'|trans,
'image_url_denios_assets':'image_url_denios_assets'|trans,
'image_url_storyblok':'image_url_storyblok'|trans,
'back': 'back'|trans,
'header_vat_excluding': 'header_vat_excluding'|trans,
'header_vat_including': 'header_vat_including'|trans,
'header_direct_order': 'header_direct_order'|trans,
'account_new_password_requirement': 'account_new_password_requirement'|trans,
'password_requirement_min_length': 'password_min_length'|trans,
'password_requirement_min_uppercase': 'password_min_uppercase'|trans,
'password_requirement_min_lowercase': 'password_min_lowercase'|trans,
'password_requirement_min_numbers': 'password_min_numbers'|trans,
'header_account_label': 'header_account_label'|trans,
'loading': 'loading'|trans,
'voucher_apply': 'voucher_apply'|trans,
'voucher_hint': 'voucher_hint'|trans,
'voucher_input_placeholder': 'voucher_input_placeholder'|trans,
'to_the_top': 'button_to_the_top'|trans,
'language_switcher_json': 'header_language_switcher'|trans([],'json'),
'messages.formservice_required_validation_message': 'formservice_required_validation_message'|trans,
'messages.formservice_email_validation_message': 'formservice_email_validation_message'|trans,
'messages.formservice_date_validation_message': 'formservice_date_validation_message'|trans,
'messages.formservice_date_after_validation_message': 'formservice_date_after_validation_message'|trans,
'messages.formservice_date_before_validation_message': 'formservice_date_before_validation_message'|trans,
'messages.formservice_date_days_of_week_validation_message': 'formservice_date_days_of_week_validation_message'|trans,
'messages.formservice_frc_validation_message': 'formservice_frc_validation_message'|trans,
'form_reference_button': 'form_reference_button'|trans,
'form_reference_technical_error': 'form_reference_technical_error'|trans,
'form_time_format': 'form_time_format'|trans,
'download': 'form_reference_download_button'|trans,
'dvs_type_translation': 'dvs_type_translation'|trans([],'json'),
'line_item_extra_info': 'line_item_extra_info'|transFallbackEmptyText,
'book_appointment': 'book_appointment'|transFallbackEmptyText,
'load_more':'pagination_more_text'|trans,
'listing_filter_button':'listing_filter_button'|trans,
'filter_show_more': 'filter_show_more'|trans,
'filter_show_less': 'filter_show_less'|trans,
'listing_sorting': 'listing_sorting'|trans,
'listing_filter_active_filter_reset' : 'listing_filter_active_filter_reset'|trans,
'reset': 'reset' | trans,
'product_sku': 'product_sku'|trans,
'category_label': 'category_label'|trans,
'header_search_products': 'header_search_products'|trans,
'header_search_suggest_terms': 'header_search_suggest_terms'|trans,
'header_search_categories': 'header_search_categories'|trans,
'header_search_placeholder': 'header_search_placeholder'|trans,
'show_more_options': 'show_more_options'|trans,
'show_less_options': 'show_less_options'|trans,
'product_this': 'product_this'|trans,
'product_similar': 'product_similar'|trans,
'product_show': 'product_show'|trans,
'compare_products': 'compare_products'|trans,
'show_more': 'show_more'|trans,
'show_less': 'show_less'|trans,
'pagination_product_counter': 'pagination_product_counter'|trans,
'successful': 'successful'|trans,
'quantity': 'offcanvas_cart_line_item_quantity'|trans,
'add_to_basket_successfully': 'add_to_basket_successfully'|trans,
'add_to_basket': 'add_to_basket'|trans,
'menu': 'mobile_menu_title'|trans,
'next': 'next'|trans,
'search': 'search'|trans,
'close': 'close'|trans
} %}
{# ️️️⚠️ ↑↑↑: When adding a new snippet, update the TypeScript declaration as well! ↑↑↑ ⚠️️ #}
{% block javascriptTranslations %}
{# This block and the above variable jsTranslations is now extendable, like this:
{% block javascriptTranslations %}
{% set jsTranslations = jsTranslations|merge({
'NEW_ENTRY': 'NEW_ENTRY'|trans,
}) %}
{{ parent() }}
{% endblock %}
#}
window.translations = {{ jsTranslations|json_encode|raw }};
window.currentLocaleWithHyphen = '{{ storeContext.localeInfo.getCurrentLocaleWithHyphen }}'
window.currencyCode = '{{ 0|currencyCode }}'
window.storeKey = '{{ storeKey() }}'
window.storeAlias = '{{ storeContext.getAlias }}'
{# window.environmentShortString = '{{ environmentShortString() }}' #}
{% endblock %}
window.controllerUrls = {
'urlAddToShoppingList': '{{ path('app_shopping_list_add') }}',
'urlRemoveFromShoppingList': '{{ path('app_shopping_list_remove') }}',
'current': '{{ app.request.uri }}',
'cart': '{{ path('checkout_cart_index') }}',
'cartCount': '{{ path('checkout_cart_get_items_count') }}',
'directOrder': '{{ path('checkout_cart_index') }}?directOrder=true',
'categoryTree': '{{ path('app_get_category_tree') }}',
'urlService': '{{ app.request.server.get('URLSERVICE') }}',
'imageService': '{{ app.request.server.get('IMAGESERVICE') }}',
'currentLanguage': '{{ storeContext.localeInfo.currentLocale|default }}',
'defaultLanguage': '{{ storeContext.localeInfo.defaultLocale|default }}',
'academyApiUrl': '{{ app.request.server.get('ACADEMYSERVICE')|default }}',
'productAttributeLabel': '{{ path('app_get_product_attribute_label_by_key') }}',
'productSkusByPriceChannel': '{{ path('app_get_product_skus_by_channel') }}',
'loadMenuSlot': '{{ path('app_get_menu_slot') }}',
'loggingUrl': '{{ path('checkout_order_logging') }}'
}
{# ️️️⚠️ ↑↑↑: When adding a new URL, update the TypeScript declaration as well! ↑↑↑ ⚠️️ #}
window.useUsSkuPattern = Boolean({{ storeContext.isAmericaSkuFormat|default(0) }});
/** @type {boolean} */
window.isPreview = {% if app.getRequest().attributes.get('storyblok_preview') %}true{% else %}false{% endif %};
{% if app.request.cookies.get("isPunchout") == "oci" or app.request.cookies.get("isPunchout") == "cxml" %}
window.isPunchout = true;
window.priceChannel = '{{ storeContext.getPriceChannelId }}';
{% endif %}
</script>
{{ encore_entry_script_tags('app') }}
{{ encore_entry_script_tags('friendly-captcha-v2', null, '_default', {
type: 'module',
async: true,
defer: true
}) }}
{% endblock %}
{% block structuredData %}
{% include('components/atoms/structured-data/structured-data.html.twig') with {
'structuredData': 'structured_data_default'|trans
} %}
{% endblock %}
</body>
</html>