custom/plugins/ShopWithMeUI/src/Resources/views/storefront/base.html.twig line 1

Open in your IDE?
  1. {# Set variable to "true" to enable HMR (hot page reloading) mode #}
  2. {% set isHMRMode = app.request.headers.get('hot-reload-mode') and app.environment == 'dev' %}
  3. {% block base_doctype %}
  4. <!DOCTYPE html>
  5. {% endblock %}
  6. {% block base_html %}
  7. <html lang="{{ page.header.activeLanguage.translationCode.code }}"
  8.       itemscope="itemscope"
  9.       itemtype="https://schema.org/WebPage">
  10. {% endblock %}
  11. {% block base_head %}
  12.     {% sw_include '@Storefront/storefront/layout/meta.html.twig' %}
  13.     
  14.     <link rel="stylesheet" href="{{ asset('bundles/shopwithmeui/css/animate.min.css') }}">
  15. {% endblock %}
  16. {% set selectedLanguage = (page.header.activeLanguage.translationCode.code ?: app.request.locale)|lower|split('-')[0] %}
  17. {% block base_body %}
  18.     {% set isVideoStar = app.request.get('_route') == 'frontend.daily.ranking' %}
  19.     {% set isSave4More = app.request.get('_route') == 'frontend.save4more.home' or app.request.get('_route') == 'frontend.save4more.terms' %}
  20.     <body 
  21.     data-customerName="{{ context.customer.firstName|default('') ~ ' ' ~ context.customer.lastName|default('') }}"
  22.     data-customerEmail="{{ context.customer.email|default('') }}"
  23.     data-csrfGetToken="{{ path('frontend.csrf.get_token') }}"
  24.     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 %}">
  25.     <div id="check-user-logged" is-logged="{{context.customer.id}}"></div>
  26.     <div id="data-currency" data-currency="{{context.currency.symbol}}" data-currency-iso="{{context.currency.isoCode}}"></div>
  27.     <div
  28.     data-firebase-notification
  29.     data-path="{{ path('frontend.fcm.save.token') }}"
  30.     data-csrf="{{ sw_csrf('frontend.fcm.save.token', {'mode': 'token'}) }}"
  31.     ></div>
  32.     <div
  33.     class="url_api_count_not_view"
  34.     data-path="{{ path('api.notification.count-not-view') }}"
  35.     data-csrf="{{ sw_csrf('api.notification.count-not-view', {'mode': 'token'}) }}"
  36.     ></div>
  37.     <div
  38.     class="language-firebase-app"
  39.     data-language="{{ selectedLanguage }}"
  40.     ></div>
  41.     {% block base_body_inner %}
  42.         {% block base_noscript %}
  43.             <noscript class="noscript-main">
  44.                 {% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
  45.                     type: 'info',
  46.                     content: 'general.noscriptNotice'|trans|sw_sanitize
  47.                 } %}
  48.             </noscript>
  49.         {% endblock %}
  50.         {% if not isVideoStar and not isSave4More %}
  51.             {% block base_header %}
  52.                 <header class="header-main">
  53.                     {% block base_header_inner %}
  54.                         <div class="header-main__container">
  55.                             {% sw_include '@Storefront/storefront/layout/header/header.html.twig' %}
  56.                         </div>
  57.                     {% endblock %}
  58.                 </header>
  59.             {% endblock %}
  60.         {% endif %}
  61.         {# {% block base_navigation %}
  62.             <div class="nav-main">
  63.                 {% block base_navigation_inner %}
  64.                     {% sw_include '@Storefront/storefront/layout/navigation/navigation.html.twig' %}
  65.                 {% endblock %}
  66.             </div>
  67.         {% endblock %} #}
  68.         {# {% block base_offcanvas_navigation %}
  69.             {% if page.header.navigation %}
  70.                 <div class="d-none js-navigation-offcanvas-initial-content{% if context.salesChannel.navigationCategoryId == page.header.navigation.active.id %} is-root{% endif %}">
  71.                     {% block base_offcanvas_navigation_inner %}
  72.                         {% sw_include '@Storefront/storefront/layout/navigation/offcanvas/navigation.html.twig' with { navigation: page.header.navigation } %}
  73.                     {% endblock %}
  74.                 </div>
  75.             {% endif %}
  76.         {% endblock %} #}
  77.         {% block base_main %}
  78.             <main class="content-main">
  79.                 {% block base_main_inner %}
  80.                     <div class="container">
  81.                         {% block base_main_container %}
  82.                             <div class="container-main">
  83.                                 {% block base_breadcrumb %}
  84.                                     {% sw_include '@Storefront/storefront/layout/breadcrumb.html.twig' with {
  85.                                         context: context,
  86.                                         category: page.product.seoCategory
  87.                                     } only %}
  88.                                 {% endblock %}
  89.                                 {% block base_content %}{% endblock %}
  90.                             </div>
  91.                         {% endblock %}
  92.                     </div>
  93.                 {% endblock %}
  94.             </main>
  95.         {% endblock %}
  96.         {% block base_footer %}
  97.             {% if isSave4More %}
  98.                 
  99.             {% else %}
  100.                 {% sw_include '@Storefront/storefront/layout/footer/footer.html.twig' %}
  101.                 {% sw_include '@Storefront/storefront/layout/footer/footer-mobile.html.twig' %}
  102.             {% endif %}
  103.         {% endblock %}
  104.     {% endblock %}
  105.     {% block base_scroll_up %}
  106.         {% sw_include '@Storefront/storefront/layout/scroll-up.html.twig' %}
  107.     {% endblock %}
  108.     {% block base_cookie_permission %}
  109.         {% sw_include '@Storefront/storefront/layout/cookie/cookie-permission.html.twig' %}
  110.     {% endblock %}
  111.     {% block base_pseudo_modal %}
  112.         {% sw_include '@Storefront/storefront/component/pseudo-modal.html.twig' %}
  113.     {% endblock %}
  114.     {% sw_include '@Storefront/storefront/component/notify.html.twig' %}
  115.     {% sw_include '@Storefront/storefront/component/toastNoti.html.twig' %}
  116.     {% block base_body_script %}
  117.         {% if not feature('FEATURE_NEXT_15917') %}
  118.             {# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_token` instead #}
  119.             {% block base_script_token %}
  120.             {% endblock %}
  121.             {# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_router` instead #}
  122.             {% block base_script_router %}
  123.                 {# Register all routes that will be needed in JavaScript to the window.router object #}
  124.                 <script>
  125.                     window.activeNavigationId = '{{ page.header.navigation.active.id }}';
  126.                     window.router = {
  127.                         'frontend.cart.offcanvas': '{{ path('frontend.cart.offcanvas') }}',
  128.                         'frontend.cookie.offcanvas': '{{ path('frontend.cookie.offcanvas') }}',
  129.                         'frontend.checkout.finish.page': '{{ path('frontend.checkout.finish.page') }}',
  130.                         'frontend.checkout.info': '{{ path('frontend.checkout.info') }}',
  131.                         'frontend.menu.offcanvas': '{{ path('frontend.menu.offcanvas') }}',
  132.                         'frontend.cms.page': '{{ path('frontend.cms.page') }}',
  133.                         'frontend.cms.navigation.page': '{{ path('frontend.cms.navigation.page') }}',
  134.                         'frontend.account.addressbook': '{{ path('frontend.account.addressbook') }}',
  135.                         {# @deprecated tag:v6.5.0 - Route frontend.csrf.generateToken will be removed. #}
  136.                         'frontend.csrf.generateToken': '{{ path('frontend.csrf.generateToken') }}',
  137.                         'frontend.country.country-data': '{{ path('frontend.country.country.data') }}',
  138.                         'frontend.store-api.proxy': '{{ path('frontend.store-api.proxy') }}',
  139.                     };
  140.                     {# @deprecated tag:v6.5.0 - storeApiProxyToken will be removed. #}
  141.                     window.storeApiProxyToken = '{{ sw_csrf("frontend.store-api.proxy", {"mode": "token"}) }}';
  142.                     window.salesChannelId = '{{ app.request.attributes.get('sw-sales-channel-id') }}';
  143.                 </script>
  144.             {% endblock %}
  145.             {# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_breakpoints` instead #}
  146.             {% block base_script_breakpoints %}
  147.                 {# Register the available viewport breakpoints the window.breakpoints object #}
  148.                 <script>
  149.                     {% set breakpoint = {
  150.                         'xs': theme_config('breakpoint.xs'),
  151.                         'sm': theme_config('breakpoint.sm'),
  152.                         'md': theme_config('breakpoint.md'),
  153.                         'lg': theme_config('breakpoint.lg'),
  154.                         'xl': theme_config('breakpoint.xl')
  155.                     } %}
  156.                     {# @deprecated tag:v6.5.0 - Bootstrap v5 adds xxl breakpoint #}
  157.                     {% if feature('v6.5.0.0') %}
  158.                         {% set breakpoint = breakpoint|merge({
  159.                             'xxl': theme_config('breakpoint.xxl')
  160.                         }) %}
  161.                     {% endif %}
  162.                     window.breakpoints = {{ breakpoint|json_encode()|raw }};
  163.                 </script>
  164.             {% endblock %}
  165.             {# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_csrf` instead #}
  166.             {% block base_script_csrf %}
  167.                 <script>
  168.                     window.csrf = {
  169.                         'enabled': '{{ shopware.csrfEnabled }}',
  170.                         'mode': '{{ shopware.csrfMode }}'
  171.                     }
  172.                 </script>
  173.             {% endblock %}
  174.             {% if config('core.cart.wishlistEnabled') %}
  175.                 {# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_wishlist_state` instead #}
  176.                 {% block base_script_wishlist_state %}
  177.                     <script>
  178.                         window.customerLoggedInState = {{ context.customer is not null and not context.customer.guest ? 1 : 0 }};
  179.                         window.wishlistEnabled = {{ config('core.cart.wishlistEnabled') }};
  180.                     </script>
  181.                 {% endblock %}
  182.             {% endif %}
  183.             {# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_jquery` instead #}
  184.             {% block base_script_jquery %}
  185.             {% endblock %}
  186.             {# @deprecated tag:v6.5.0 - Will be moved to `layout/meta.html.twig` - Use block `layout_head_javascript_hmr_mode` instead #}
  187.             {% block base_script_hmr_mode %}
  188.                 {% if isHMRMode %}
  189.                     <script type="text/javascript" src="/_webpack_hot_proxy_/js/vendor-node.js"></script>
  190.                     <script type="text/javascript" src="/_webpack_hot_proxy_/js/vendor-shared.js"></script>
  191.                     <script type="text/javascript" src="/_webpack_hot_proxy_/js/runtime.js"></script>
  192.                     <script type="text/javascript" src="/_webpack_hot_proxy_/js/app.js"></script>
  193.                     {# The storefront entry is a combined entry point which contains all plugins & themes #}
  194.                     <script type="text/javascript" src="/_webpack_hot_proxy_/js/storefront.js"></script>
  195.                 {% else %}
  196.                     {% for file in theme_config('assets.js') %}
  197.                         <script type="text/javascript" src="{{ asset(file, 'theme') }}"></script>
  198.                     {% endfor %}
  199.                 {% endif %}
  200.             {% endblock %}
  201.         {% endif %}
  202.     {% endblock %}
  203.     </body>
  204. {% endblock %}
  205. </html>