vendor/shopware/storefront/Resources/views/storefront/layout/meta.html.twig line 1

Open in your IDE?
  1. {% 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 %}