{% block layout_head_inner %}
{% set metaInformation = page.metaInformation %}
{% set basicConfig = config('core.basicInformation') %}
{% set maxLength = config('seo.descriptionMaxLength') %}
{% set metaDescription = metaInformation.metaDescription|striptags|trim|u.truncate(maxLength ?? 255, '…') %}
{% set metaTitle = metaInformation.metaTitle|striptags|trim %}
{% set metaKeywords = metaInformation.metaKeywords|striptags|trim %}
<head>
{% block layout_head_meta_tags %}
{% block layout_head_meta_tags_charset %}
<meta charset="utf-8">
{% endblock %}
{% block layout_head_meta_tags_viewport %}
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% endblock %}
{% block layout_head_meta_tags_general %}
<meta name="author"
content="{% block layout_head_meta_tags_general_author %}{{ metaInformation.author|striptags }}{% endblock %}"/>
<meta name="robots"
content="{% block layout_head_meta_tags_robots %}{{ metaInformation.robots }}{% endblock %}"/>
<meta name="revisit-after"
content="{% block layout_head_meta_tags_general_revisit %}{{ metaInformation.revisit|striptags }}{% endblock %}"/>
<meta name="keywords"
content="{% block layout_head_meta_tags_keywords %}{{ metaKeywords }}{% endblock %}"/>
<meta name="description"
content="{% block layout_head_meta_tags_description %}{{ metaDescription }}{% endblock %}"/>
{% endblock %}
{% block layout_head_meta_tags_opengraph %}
<meta property="og:url"
content="{% block layout_head_meta_tags_url_og %}{{ (page.metaInformation.canonical is defined) ? page.metaInformation.canonical : app.request.uri }}{% endblock %}"/>
<meta property="og:type"
content="{% block layout_head_meta_tags_type_og %}website{% endblock %}"/>
<meta property="og:site_name"
content="{% block layout_head_meta_tags_sitename_og %}{{ basicConfig.shopName }}{% endblock %}"/>
<meta property="og:title"
content="{% block layout_head_meta_tags_title_og %}{{ metaTitle }}{% endblock %}"/>
<meta property="og:description"
content="{% block layout_head_meta_tags_description_og %}{{ metaDescription }}{% endblock %}"/>
<meta property="og:image"
content="{% block layout_head_meta_tags_image_og %}{{ theme_config('sw-logo-desktop') }}{% endblock %}"/>
<meta name="twitter:card"
content="{% block layout_head_meta_tags_card_twitter %}summary{% endblock %}"/>
<meta name="twitter:site"
content="{% block layout_head_meta_tags_sitename_twitter %}{{ basicConfig.shopName }}{% endblock %}"/>
<meta name="twitter:title"
content="{% block layout_head_meta_tags_title_twitter %}{{ metaTitle }}{% endblock %}"/>
<meta name="twitter:description"
content="{% block layout_head_meta_tags_description_twitter %}{{ metaDescription }}{% endblock %}"/>
<meta name="twitter:image"
content="{% block layout_head_meta_tags_image_twitter %}{{ theme_config('sw-logo-desktop') }}{% endblock %}"/>
{% endblock %}
{% block layout_head_meta_tags_schema_webpage %}
<meta itemprop="copyrightHolder"
content="{% block layout_head_meta_tags_copyright_holder %}{{ basicConfig.shopName }}{% endblock %}"/>
<meta itemprop="copyrightYear"
content="{% block layout_head_meta_tags_copyright_year %}{{ metaInformation.copyrightYear|striptags }}{% endblock %}"/>
<meta itemprop="isFamilyFriendly"
content="{% block layout_head_meta_tags_family_friendly %}{% if basicConfig.familyFriendly %}true{% else %}false{% endif %}{% endblock %}"/>
<meta itemprop="image"
content="{% block layout_head_meta_tags_image_meta %}{{ theme_config('sw-logo-desktop') }}{% endblock %}"/>
{% endblock %}
{% block layout_head_meta_tags_hreflangs %}
{% for link in hrefLang %}
<link rel="alternate" hreflang="{{ link.locale }}" href="{{ link.url }}" />
{% endfor %}
{% endblock %}
{% endblock %}
{% block layout_head_favicon %}
<link rel="shortcut icon"
href="{{ theme_config('sw-logo-favicon') }}">
{% endblock %}
{% block layout_head_apple %}
{% if theme_config('sw-logo-share') %}
<link rel="apple-touch-icon"
sizes="180x180"
href="{{ theme_config('sw-logo-share') }}">
{% endif %}
{% endblock %}
{% block layout_head_android %}
{# @deprecated tag:v6.5.0 - Use the block above, "layout_head_apple", instead #}
{% endblock %}
{% block layout_head_canonical %}
{% if page.metaInformation.canonical %}
<link rel="canonical" href="{{ page.metaInformation.canonical }}" />
{% endif %}
{% endblock %}
{% block layout_head_title %}
<title itemprop="name">{% apply spaceless %}
{% block layout_head_title_inner %}
{{ metaTitle }}
{% endblock %}
{% endapply %}</title>
{% endblock %}
{% block layout_head_stylesheet %}
{% if isHMRMode %}
{# CSS will be loaded from the JS automatically #}
{% else %}
{% set assets = theme_config('assets.css') %}
{% for file in assets %}
<link rel="stylesheet"
href="{{ asset(file, 'theme') }}">
{% endfor %}
{% endif %}
{% endblock %}
{% block layout_head_javascript_feature %}
{% sw_include "@Storefront/storefront/component/feature.html.twig" %}
{% endblock %}
{# Block for tracking scripts which are required to include in the `head` section of the document #}
{% block layout_head_javascript_tracking %}
{% sw_include "@Storefront/storefront/component/analytics.html.twig" %}
{% endblock %}
{% block layout_head_javascript_recaptcha %}
{% sw_include "@Storefront/storefront/component/recaptcha.html.twig" %}
{% endblock %}
{% block layout_head_javascript_token %}
{% endblock %}
{% if config('core.basicInformation.useDefaultCookieConsent') %}
{% block layout_head_javascript_cookie_state %}
<script>
window.useDefaultCookieConsent = true;
</script>
{% endblock %}
{% endif %}
{% if feature('FEATURE_NEXT_15917') %}
{% block layout_head_javascript_router %}
{# Register all routes that will be needed in JavaScript to the window.router object #}
<script>
window.activeNavigationId = '{{ page.header.navigation.active.id }}';
window.router = {
'frontend.cart.offcanvas': '{{ path('frontend.cart.offcanvas') }}',
'frontend.cookie.offcanvas': '{{ path('frontend.cookie.offcanvas') }}',
'frontend.checkout.finish.page': '{{ path('frontend.checkout.finish.page') }}',
'frontend.checkout.info': '{{ path('frontend.checkout.info') }}',
'frontend.menu.offcanvas': '{{ path('frontend.menu.offcanvas') }}',
'frontend.cms.page': '{{ path('frontend.cms.page') }}',
'frontend.cms.navigation.page': '{{ path('frontend.cms.navigation.page') }}',
'frontend.account.addressbook': '{{ path('frontend.account.addressbook') }}',
{# @deprecated tag:v6.5.0 - Route frontend.csrf.generateToken will be removed. #}
'frontend.csrf.generateToken': '{{ path('frontend.csrf.generateToken') }}',
'frontend.country.country-data': '{{ path('frontend.country.country.data') }}',
'frontend.store-api.proxy': '{{ path('frontend.store-api.proxy') }}',
};
{# @deprecated tag:v6.5.0 - storeApiProxyToken will be removed. #}
window.storeApiProxyToken = '{{ sw_csrf("frontend.store-api.proxy", {"mode": "token"}) }}';
window.salesChannelId = '{{ app.request.attributes.get('sw-sales-channel-id') }}';
</script>
{% endblock %}
{% block layout_head_javascript_breakpoints %}
{# Register the available viewport breakpoints the window.breakpoints object #}
<script>
{% set breakpoint = {
'xs': theme_config('breakpoint.xs'),
'sm': theme_config('breakpoint.sm'),
'md': theme_config('breakpoint.md'),
'lg': theme_config('breakpoint.lg'),
'xl': theme_config('breakpoint.xl')
} %}
window.breakpoints = {{ breakpoint|json_encode()|raw }};
</script>
{% endblock %}
{# @deprecated tag:v6.5.0 - Block layout_head_javascript_csrf will be removed. #}
{% block layout_head_javascript_csrf %}
<script>
window.csrf = {
'enabled': '{{ shopware.csrfEnabled }}',
'mode': '{{ shopware.csrfMode }}'
}
</script>
{% endblock %}
{% if config('core.cart.wishlistEnabled') %}
{% block layout_head_javascript_wishlist_state %}
<script>
window.customerLoggedInState = {{ context.customer is not null and not context.customer.guest ? 1 : 0 }};
window.wishlistEnabled = {{ config('core.cart.wishlistEnabled') }};
</script>
{% endblock %}
{% endif %}
{# @internal tag:v6.5.0 - jQuery will be removed from the core. This block can be used to add jQuery as a `<script>`. #}
{% block layout_head_javascript_jquery %}
{% endblock %}
{% block layout_head_javascript_hmr_mode %}
{% if isHMRMode %}
<script type="text/javascript" src="/_webpack_hot_proxy_/js/vendor-node.js" defer></script>
<script type="text/javascript" src="/_webpack_hot_proxy_/js/vendor-shared.js" defer></script>
<script type="text/javascript" src="/_webpack_hot_proxy_/js/runtime.js" defer></script>
<script type="text/javascript" src="/_webpack_hot_proxy_/js/app.js" defer></script>
{# The storefront entry is a combined entry point which contains all plugins & themes #}
<script type="text/javascript" src="/_webpack_hot_proxy_/js/storefront.js" defer></script>
{% else %}
{% for file in theme_config('assets.js') %}
<script type="text/javascript" src="{{ asset(file, 'theme') }}" defer></script>
{% endfor %}
{% endif %}
{% endblock %}
{% endif %}
</head>
{% endblock %}