bundles/FoxHabbit/BasisBundle/Resources/views/Layout/layout.html.twig line 253

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html lang="{{ app.request.locale }}" class="nojs">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6.     {% apply spaceless -%}
  7.         {# add global stylesheets and scripts outside of any blocks to add them to the helpers before any others assets are added #}
  8.         {# we use the view helper to have cache buster functionality #}
  9.         {# optional: Load Fonts and Icons early in the process #}
  10.         {# do pimcore_head_link().appendStylesheet(asset('/css/fonts/fonts.css'), 'screen') #}
  11.         {# do pimcore_head_link().appendStylesheet(asset('/css/fonts/iconset.css'), 'screen') #}
  12.         {# do pimcore_head_link().appendStylesheet(asset('//fast.fonts.net/cssapi/ .... .css/'), 'screen') #}
  13.         {# Load our usual CSS Stuff #}
  14.         {% if document.getProperty('template_css_vendor') %}
  15.             {% do pimcore_head_link().appendStylesheet(document.getProperty('template_css_vendor'), 'screen') %}
  16.         {% elseif pimcore_website_config('templateCssVendor') %}
  17.             {% do pimcore_head_link().appendStylesheet(pimcore_website_config('templateCssVendor'), 'screen') %}
  18.         {% else %}
  19.             {# no longer required #}
  20.             {#% do pimcore_head_link().appendStylesheet(asset('/css/vendor.css'), 'screen') %#}
  21.         {% endif %}
  22.         {% if document.getProperty('template_css_main') %}
  23.             {% do pimcore_head_link().appendStylesheet(document.getProperty('template_css_main'), 'screen') %}
  24.         {% elseif pimcore_website_config('templateCssMain') %}
  25.             {% do pimcore_head_link().appendStylesheet(pimcore_website_config('templateCssMain'), 'screen') %}
  26.         {% else %}
  27.             {% if app.environment == 'dev' %}
  28.                 {% do pimcore_head_link().appendStylesheet(asset('/css/dev/main.css'), 'screen') %}
  29.             {% else %}
  30.                 {% do pimcore_head_link().appendStylesheet(asset('/css/prod/main.css'), 'screen') %}
  31.             {% endif %}
  32.         {% endif %}
  33.         {% if document.getProperty('template_css_font') %}
  34.             {% do pimcore_head_link().appendStylesheet(document.getProperty('template_css_font'), 'screen') %}
  35.         {% elseif pimcore_website_config('templateCssFont') %}
  36.             {% do pimcore_head_link().appendStylesheet(pimcore_website_config('templateCssFont'), 'screen') %}
  37.         {% else %}
  38.             {# will be included in the main css by default #}
  39.             {#% do pimcore_head_link().appendStylesheet(asset('/css/fonts.css'), 'screen') %#}
  40.         {% endif %}
  41.         {% if editmode %}
  42.             {% if app.environment == 'dev' %}
  43.                 {% do pimcore_head_link().appendStylesheet(asset('/css/dev/editmode.css')) %}
  44.             {% else %}
  45.                 {% do pimcore_head_link().appendStylesheet(asset('/css/prod/editmode.css')) %}
  46.             {% endif %}
  47.         {% endif %}
  48.         {# Load our usual JavaScript Stuff #}
  49.         {% do pimcore_head_script().appendFile(asset('/js/es6-promise.auto.min.js'), "") %}
  50.         {% do pimcore_head_script().appendFile(asset('/js/common.bundle.js'), "", {"data-cookieconsent": "ignore"}) %}
  51.         {% do pimcore_head_script().appendFile(asset('/js/ytplayer.bundle.js'), "", {"data-cookieconsent": "marketing"}) %}
  52.         {% do pimcore_head_script().appendFile(asset('/js/search.bundle.js')) %}
  53.         {% do pimcore_head_script().appendFile(asset('/js/productdetailsswiper.bundle.js')) %}
  54.         {% include '@App/TrackingScripts/echobot-leadfeeder.html.twig' %}
  55.         {% include '@App/TrackingScripts/sales-viewer.html.twig' %}
  56.         {% if not document is defined or not document %}
  57.             {% set document = pimcore_document(1) %}
  58.         {% endif %}
  59.         {% if document is instanceof('\\Pimcore\\Model\\Document\\Link') %}
  60.             {# @var document \Pimcore\Model\Document\Link #}
  61.             {% set document = document.getObject() %}
  62.         {% endif %}
  63.         {% if document is instanceof('\\Pimcore\\Model\\Document\\Snippet') %}
  64.             {# snippet #}
  65.         {% else %}
  66.             {% if document.getTitle() is not empty %}
  67.                 {% do pimcore_head_title().set(document.getTitle()) %}
  68.                 {% do pimcore_head_meta().setProperty('og:title',document.getTitle()) %}
  69.             {% endif %}
  70.             {% if pimcore_placeholder('title') is not empty %}
  71.                 {% do pimcore_head_title().set(pimcore_placeholder('title')) %}
  72.                 {% do pimcore_head_meta().setProperty('og:title',pimcore_placeholder('title')) %}
  73.             {% endif %}
  74.             {% if document.getDescription() is not empty %}
  75.                 {% do pimcore_head_meta().setDescription(document.getDescription()) %}
  76.                 {% do pimcore_head_meta().setProperty('og:description',document.getDescription()) %}
  77.             {% endif %}
  78.             {% if pimcore_placeholder('description') is not empty %}
  79.                 {% do pimcore_head_meta().setDescription(pimcore_placeholder('description')) %}
  80.                 {% do pimcore_head_meta().setProperty('og:description',pimcore_placeholder('description')) %}
  81.             {% endif %}
  82.             {% if pimcore_placeholder('share_image') is not empty %}
  83.                 {% do pimcore_head_meta().setProperty('og:image',app.request.getSchemeAndHttpHost() ~ pimcore_placeholder('share_image')) %}
  84.                 {% if pimcore_placeholder('share_image:width') is not empty %}
  85.                     {% do pimcore_head_meta().setProperty('og:image:width',pimcore_placeholder('share_image:width')) %}
  86.                 {% endif %}
  87.                 {% if pimcore_placeholder('share_image:height') is not empty %}
  88.                     {% do pimcore_head_meta().setProperty('og:image:height',pimcore_placeholder('share_image:height')) %}
  89.                 {% endif %}
  90.             {% endif %}
  91.             {% if document.getProperty('og:site_name') %}
  92.                 {% do pimcore_head_meta().setProperty('og:site_name',document.getProperty('og:site_name')) %}
  93.             {% endif %}
  94.             {% do pimcore_head_meta().setProperty('og:type','website') %}
  95.             {# nicht für website % do pimcore_head_meta().setProperty('og:locale ', app.request.locale) %#}
  96.             {% if pimcore_placeholder('url') is not empty %}
  97.                 {% do pimcore_head_meta().setProperty('og:url',app.request.getSchemeAndHttpHost() ~ pimcore_placeholder('url')) %}
  98.             {% else %}
  99.                 {% do pimcore_head_meta().setProperty('og:url ',app.request.getSchemeAndHttpHost() ~ document.getFullPath()) %}
  100.             {% endif %}
  101.             {# add hreflang links between the different languages #}
  102.             {% set languageVersions = foxhabbit_common_tool_get_document_translations( document, "navRoot") %}
  103.             {% for languageVersion in languageVersions %}
  104.                 {% do pimcore_head_link( {rel: 'alternate', href: absolute_url( languageVersion.href), hreflang: languageVersion.locale}) %}
  105.             {% endfor %}
  106.         {% endif %}
  107.     {%- endapply %}
  108.     {# we're using the deferred extension here to make sure this block is rendered after all helper calls #}
  109.     {% block layout_head_meta deferred -%}
  110.         {{ pimcore_head_title() }}
  111.         {{ pimcore_head_meta() }}
  112.     {% endblock %}
  113.     {% block head_stylesheets deferred -%}
  114.         {{ pimcore_head_link() }}
  115.     {% endblock %}
  116.     {% block scripts deferred -%}
  117.         {% do pimcore_head_script().setAllowArbitraryAttributes(true) %}
  118.         {{ pimcore_head_script() }}
  119.     {% endblock %}
  120.     {% include '@FoxHabbitBasis/Layout/includes/favicons.html.twig' %}
  121.     <script>
  122.         {# String.startsWith() Polyfill; needed for IE -#}
  123.         if (!String.prototype.startsWith) {
  124.             String.prototype.startsWith = function(searchString, position) {
  125.                 position = position || 0;
  126.                 return this.indexOf(searchString, position) === position;
  127.             };
  128.         }
  129.         {#
  130.             Element.classlist Polyfill
  131.             Sobald wir den Support für IE9 streichen, kann das raus.
  132.         -#}
  133.         /**
  134.         * Element.prototype.classList for IE8/9, Safari.
  135.         * @author    Kerem Güneş <k-gun@mail.com>
  136.         * @copyright Released under the MIT License <https://opensource.org/licenses/MIT>
  137.         * @version   1.2
  138.         * @see       https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
  139.         */
  140.         ;(function() {
  141.             // Helpers.
  142.             var trim = function(s) {
  143.                     return s.replace(/^\s+|\s+$/g, '');
  144.                 },
  145.                 regExp = function(name) {
  146.                     return new RegExp('(^|\\s+)'+ name +'(\\s+|$)');
  147.                 },
  148.                 forEach = function(list, fn, scope) {
  149.                     for (var i = 0; i < list.length; i++) {
  150.                         fn.call(scope, list[i]);
  151.                     }
  152.                 };
  153.             // Class list object with basic methods.
  154.             function ClassList(element) {
  155.                 this.element = element;
  156.             }
  157.             ClassList.prototype = {
  158.                 add: function() {
  159.                     forEach(arguments, function(name) {
  160.                         if (!this.contains(name)) {
  161.                             this.element.className = trim(this.element.className +' '+ name);
  162.                         }
  163.                     }, this);
  164.                 },
  165.                 remove: function() {
  166.                     forEach(arguments, function(name) {
  167.                         this.element.className = trim(this.element.className.replace(regExp(name), ' '));
  168.                     }, this);
  169.                 },
  170.                 toggle: function(name) {
  171.                     return this.contains(name) ? (this.remove(name), false) : (this.add(name), true);
  172.                 },
  173.                 contains: function(name) {
  174.                     return regExp(name).test(this.element.className);
  175.                 },
  176.                 item: function(i) {
  177.                     return this.element.className.split(/\s+/)[i] || null;
  178.                 },
  179.                 // bonus
  180.                 replace: function(oldName, newName) {
  181.                     this.remove(oldName), this.add(newName);
  182.                 }
  183.             };
  184.             // IE8/9, Safari
  185.             // Remove this if statements to override native classList.
  186.             if (!('classList' in Element.prototype)) {
  187.             // Use this if statement to override native classList that does not have for example replace() method.
  188.             // See browser compatibility: https://developer.mozilla.org/en-US/docs/Web/API/Element/classList#Browser_compatibility.
  189.             // if (!('classList' in Element.prototype) ||
  190.             //     !('classList' in Element.prototype && Element.prototype.classList.replace)) {
  191.                 Object.defineProperty(Element.prototype, 'classList', {
  192.                     get: function() {
  193.                         return new ClassList(this);
  194.                     }
  195.                 });
  196.             }
  197.             // For others replace() support.
  198.             if (window.DOMTokenList && !DOMTokenList.prototype.replace) {
  199.                 DOMTokenList.prototype.replace = ClassList.prototype.replace;
  200.             }
  201.         })();
  202.         {# remove nojs class from HTML Element #}
  203.         document.documentElement.classList.replace('nojs', 'js');
  204.     </script>
  205. </head>
  206. {% set bodyclass = [] %}
  207. {% if is_granted('IS_AUTHENTICATED_FULLY') %}
  208.     {% set bodyclass = bodyclass|merge(['is-authenticated']) %}
  209. {% endif %}
  210. {% if editmode %}
  211.     {% set bodyclass = bodyclass|merge(['editmode']) %}
  212. {% endif %}
  213. <body id="page-top" class="{{ bodyclass|join(' ') }}" itemscope itemtype="http://schema.org/WebPage">
  214.     {% if not editmode %}
  215.         <!-- TOPNAV START -->
  216.         {% set snippets = ['snippetTopnav'] %}
  217.         {% for snippetProperty in snippets %}
  218.             {% set snippet = document.getProperty(snippetProperty) %}
  219.             {% if snippet %}
  220.                 {{pimcore_inc(snippet, { pageDocument: document})}}
  221.             {% else %}
  222.                 {% set snippet = pimcore_website_config(snippetProperty) %}
  223.                 {% if snippet %}
  224.                     {{pimcore_inc(snippet, { pageDocument: document})}}
  225.                 {% endif %}
  226.             {% endif %}
  227.         {% endfor %}
  228.         <!-- TOPNAV END -->
  229.     {% endif %}
  230.     <!-- MAIN CONTENT START -->
  231.     <article class="main-content" role="main">
  232.         <!-- start-index -->
  233.         {{ block('content') }}
  234.         {% set snippets = ['snippetArticleFooter'] %}
  235.         {% for snippetProperty in snippets %}
  236.             {% set snippet = document.getProperty(snippetProperty) %}
  237.             {% if snippet %}
  238.                 {{pimcore_inc(snippet)}}
  239.             {% else %}
  240.                 {% set snippet = pimcore_website_config(snippetProperty) %}
  241.                 {% if snippet %}
  242.                     {{pimcore_inc(snippet, { pageDocument: document})}}
  243.                 {% endif %}
  244.             {% endif %}
  245.         {% endfor %}
  246.         <!-- /end-index -->
  247.     </article>
  248.     {% set snippets = ['snippetFooter'] %}
  249.     {% for snippetProperty in snippets %}
  250.         {% set snippet = document.getProperty(snippetProperty) %}
  251.         {% if snippet %}
  252.             {{pimcore_inc(snippet)}}
  253.         {% else %}
  254.             {% set snippet = pimcore_website_config(snippetProperty) %}
  255.             {% if snippet %}
  256.                 {{pimcore_inc(snippet, { pageDocument: document})}}
  257.             {% endif %}
  258.         {% endif %}
  259.     {% endfor %}
  260.     <!-- MAIN CONTENT END -->
  261.     {% include '@FoxHabbitBasis/Layout/includes/photoswipe.html.twig' %}
  262.     {% if app.environment == 'dev' %}
  263.         <!-- START breakpoint infos for environment {{ app.environment }} -->
  264.         <div class="dev-breakpoint-information d-print-none">
  265.             <div class="d-block d-sm-none" data-title="XS"></div>
  266.             <div class="d-none d-sm-block d-md-none" data-title="SM"></div>
  267.             <div class="d-none d-md-block d-lg-none" data-title="MD"></div>
  268.             <div class="d-none d-lg-block d-xl-none" data-title="LG"></div>
  269.             <div class="d-none d-xl-block" data-title="XL"></div>
  270.         </div>
  271.         <!-- END breakpoint infos -->
  272.     {% endif %}
  273.     {% include '@FoxHabbitBasis/Layout/includes/retargeting-pixel-script.html.twig' %}
  274. </body>
  275. </html>