{# Set variable to "true" to enable HMR (hot page reloading) mode #}
{% set isHMRMode = app.request.headers.get('hot-reload-mode') and app.environment == 'dev' %}
{% block base_doctype %}
<!DOCTYPE html>
{% endblock %}
{% block base_html %}
<html lang="{{ page.header.activeLanguage.translationCode.code }}"
itemscope="itemscope"
itemtype="https://schema.org/WebPage">
{% endblock %}
{% block base_head %}
{% sw_include '@Storefront/storefront/layout/meta.html.twig' %}
<link rel="stylesheet" href="{{ asset('bundles/shopwithmeui/css/animate.min.css') }}">
{% endblock %}
{% set selectedLanguage = (page.header.activeLanguage.translationCode.code ?: app.request.locale)|lower|split('-')[0] %}
{% block base_body %}
{% set isVideoStar = app.request.get('_route') == 'frontend.daily.ranking' %}
{% set isSave4More = app.request.get('_route') == 'frontend.save4more.home' or app.request.get('_route') == 'frontend.save4more.terms' %}
<body
data-customerName="{{ context.customer.firstName|default('') ~ ' ' ~ context.customer.lastName|default('') }}"
data-customerEmail="{{ context.customer.email|default('') }}"
data-csrfGetToken="{{ path('frontend.csrf.get_token') }}"
class="{% block base_body_classes %}is-ctl-{% if controllerName is not empty %}{{ controllerName|lower }}{% endif %} is-act-{% if controllerAction is not empty %}{{ controllerAction|lower }}{% endif %}{% endblock %}">
<div id="check-user-logged" is-logged="{{context.customer.id}}"></div>
<div id="data-currency" data-currency="{{context.currency.symbol}}" data-currency-iso="{{context.currency.isoCode}}"></div>
<div
data-firebase-notification
data-path="{{ path('frontend.fcm.save.token') }}"
data-csrf="{{ sw_csrf('frontend.fcm.save.token', {'mode': 'token'}) }}"
></div>
<div
class="url_api_count_not_view"
data-path="{{ path('api.notification.count-not-view') }}"
data-csrf="{{ sw_csrf('api.notification.count-not-view', {'mode': 'token'}) }}"
></div>
<div
class="language-firebase-app"
data-language="{{ selectedLanguage }}"
></div>
{% block base_body_inner %}
{% block base_noscript %}
<noscript class="noscript-main">
{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
type: 'info',
content: 'general.noscriptNotice'|trans|sw_sanitize
} %}
</noscript>
{% endblock %}
{% if not isVideoStar and not isSave4More %}
{% block base_header %}
<header class="header-main">
{% block base_header_inner %}
<div class="header-main__container">
{% sw_include '@Storefront/storefront/layout/header/header.html.twig' %}
</div>
{% endblock %}
</header>
{% endblock %}
{% endif %}
{# {% block base_navigation %}
<div class="nav-main">
{% block base_navigation_inner %}
{% sw_include '@Storefront/storefront/layout/navigation/navigation.html.twig' %}
{% endblock %}
</div>
{% endblock %} #}
{# {% block base_offcanvas_navigation %}
{% if page.header.navigation %}
<div class="d-none js-navigation-offcanvas-initial-content{% if context.salesChannel.navigationCategoryId == page.header.navigation.active.id %} is-root{% endif %}">
{% block base_offcanvas_navigation_inner %}
{% sw_include '@Storefront/storefront/layout/navigation/offcanvas/navigation.html.twig' with { navigation: page.header.navigation } %}
{% endblock %}
</div>
{% endif %}
{% endblock %} #}
{% block base_main %}
<main class="content-main">
{% block base_main_inner %}
<div class="container">
{% block base_main_container %}
<div class="container-main">
{% block base_breadcrumb %}
{% sw_include '@Storefront/storefront/layout/breadcrumb.html.twig' with {
context: context,
category: page.product.seoCategory
} only %}
{% endblock %}
{% block base_content %}{% endblock %}
</div>
{% endblock %}
</div>
{% endblock %}
</main>
{% endblock %}
{% block base_footer %}
{% if isSave4More %}
{% else %}
{% sw_include '@Storefront/storefront/layout/footer/footer.html.twig' %}
{% sw_include '@Storefront/storefront/layout/footer/footer-mobile.html.twig' %}
{% endif %}
{% endblock %}
{% endblock %}
{% block base_scroll_up %}
{% sw_include '@Storefront/storefront/layout/scroll-up.html.twig' %}
{% endblock %}
{% block base_cookie_permission %}
{% sw_include '@Storefront/storefront/layout/cookie/cookie-permission.html.twig' %}
{% endblock %}
{% block base_pseudo_modal %}
{% sw_include '@Storefront/storefront/component/pseudo-modal.html.twig' %}
{% endblock %}
{% sw_include '@Storefront/storefront/component/notify.html.twig' %}
{% sw_include '@Storefront/storefront/component/toastNoti.html.twig' %}
{% block base_body_script %}
{% if not feature('FEATURE_NEXT_15917') %}
{# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_token` instead #}
{% block base_script_token %}
{% endblock %}
{# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_router` instead #}
{% block base_script_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 %}
{# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_breakpoints` instead #}
{% block base_script_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')
} %}
{# @deprecated tag:v6.5.0 - Bootstrap v5 adds xxl breakpoint #}
{% if feature('v6.5.0.0') %}
{% set breakpoint = breakpoint|merge({
'xxl': theme_config('breakpoint.xxl')
}) %}
{% endif %}
window.breakpoints = {{ breakpoint|json_encode()|raw }};
</script>
{% endblock %}
{# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_csrf` instead #}
{% block base_script_csrf %}
<script>
window.csrf = {
'enabled': '{{ shopware.csrfEnabled }}',
'mode': '{{ shopware.csrfMode }}'
}
</script>
{% endblock %}
{% if config('core.cart.wishlistEnabled') %}
{# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_wishlist_state` instead #}
{% block base_script_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 %}
{# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_jquery` instead #}
{% block base_script_jquery %}
{% endblock %}
{# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_hmr_mode` instead #}
{% block base_script_hmr_mode %}
{% if isHMRMode %}
<script type="text/javascript" src="/_webpack_hot_proxy_/js/vendor-node.js"></script>
<script type="text/javascript" src="/_webpack_hot_proxy_/js/vendor-shared.js"></script>
<script type="text/javascript" src="/_webpack_hot_proxy_/js/runtime.js"></script>
<script type="text/javascript" src="/_webpack_hot_proxy_/js/app.js"></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"></script>
{% else %}
{% for file in theme_config('assets.js') %}
<script type="text/javascript" src="{{ asset(file, 'theme') }}"></script>
{% endfor %}
{% endif %}
{% endblock %}
{% endif %}
{% endblock %}
</body>
{% endblock %}
</html>