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

  1. {% sw_extends '@Storefront/storefront/base.html.twig' %}
  2. {# @TODO: prüfen... #}
  3. {# ---------------- START: SET TEMPLATE VARS ---------------- #}
  4. {# ThemeWare: Set theme variables #}
  5. {% set useDefaultCookieConsent = config('core.basicInformation.useDefaultCookieConsent') %}
  6. {% set twtContainerLayout = theme_config('twt-container-layout') %}
  7. {% set twtAdditionalJsFile = theme_config('twt-additional-js-file') %}
  8. {% set twtAdditionalJsFileAsync = theme_config('twt-additional-js-file-async') %}
  9. {% set twtAdditionalJsFileLoad = theme_config('twt-additional-js-file-load') %}
  10. {% set twtAnnouncementBannerShow = theme_config('twt-announcement-banner-show') %}
  11. {% set twtAnnouncementBannerClosable = theme_config('twt-announcement-banner-closable') %}
  12. {% set twtBodyClass = theme_config('twt-body-class') %}
  13. {% set twtBodyClassCmsPageId = theme_config('twt-body-class-cms-page-id') %}
  14. {% set twtContainerLayout = theme_config('twt-container-layout') %}
  15. {% set twtContainerMaxWidth = theme_config('twt-container-max-width') %}
  16. {% set twtCustomJsCode = theme_config('twt-custom-js-code') %}
  17. {% set twtExpertMode = theme_config('twt-expert-mode') %}
  18. {% set twtFloatingWidgetAnimation = theme_config('twt-floating-widget-animation') %}
  19. {% set twtFloatingWidgetBackdrop = theme_config('twt-floating-widget-backdrop') %}
  20. {% set twtFloatingWidgetMobile = theme_config('twt-floating-widget-mobile') %}
  21. {% set twtFloatingWidgetShow = theme_config('twt-floating-widget-show') %}
  22. {% set twtFloatingWidgetShowOpened = theme_config('twt-floating-widget-show-opened') %}
  23. {% set twtHeaderLogoType = theme_config('twt-header-logo-type') %}
  24. {% set twtHeaderSearchType = theme_config('twt-header-search-type') %}
  25. {% set twtHeaderType = theme_config('twt-header-type') %}
  26. {% set twtIconSet = theme_config('twt-iconset') %}
  27. {% set twtLicensekey = theme_config('twt-footer-lizenzkey') %}
  28. {% set twtNavMainShow = theme_config('twt-nav-main-show') %}
  29. {% set twtShoppingExperiencesHeaderPosition = theme_config('twt-shopping-experiences-header-position') %}
  30. {% set twtSlideoutCommunitiesShow = theme_config('twt-slideout-communities-show') %}
  31. {% set twtStickyNavMainBreakpoint = theme_config('twt-sticky-nav-main-breakpoint') %}
  32. {% set twtStickyNavMainCartShow = theme_config('twt-sticky-nav-main-cart-show') %}
  33. {% set twtStickyNavMainLogoImage = theme_config('twt-sticky-nav-main-logo-image') %}
  34. {% set twtStickyNavMainLogoShow = theme_config('twt-sticky-nav-main-logo-show') %}
  35. {% set twtStickyNavMainScrollTop = theme_config('twt-sticky-nav-main-scroll-top') %}
  36. {% set twtStickyNavMainSearchShow = theme_config('twt-sticky-nav-main-search-show') %}
  37. {% set twtStickyNavMainShow = theme_config('twt-sticky-nav-main-show') %}
  38. {% set twtStickyNavMainToggle = theme_config('twt-sticky-nav-main-toggle') %}
  39. {% set twtStickyNavMainType = theme_config('twt-sticky-nav-main-type') %}
  40. {% set twtHeaderPhoneFixed = theme_config('twt-header-phone-fixed') %}
  41. {% set twtUspBarFooter = theme_config('twt-usp-bar-footer') %}
  42. {% set twtUspBarFooterPosition = theme_config('twt-usp-bar-footer-position') %}
  43. {% set twtUspBarHeader = theme_config('twt-usp-bar-header') %}
  44. {% set twtUspBarHeaderPosition = theme_config('twt-usp-bar-header-position') %}
  45. {% set twtCookiePermissionPosition = theme_config('twt-cookie-permission-position') %}
  46. {# Debug mode: Overwrite expert mode #}
  47. {% if config('TcinnThemeWareModern.config.debugMode') is not empty and config('TcinnThemeWareModern.config.debugMode') == 'true' %}
  48.     {% set twtExpertMode = 1 %}
  49. {% endif %}
  50. {# Debug mode #}
  51. {% set twtCustomCssCode = theme_config('twt-custom-css-code') %}
  52. {% set twtCustomHtmlCode = theme_config('twt-custom-html-code') %}
  53. {% set twtAdditionalCssFileLoad = theme_config('twt-additional-css-file-load') %}
  54. {# ---------------- END: SET TEMPLATE VARS ---------------- #}
  55. {# ThemeWare: Set custom fields #}
  56. {% set twtCustomFields = {
  57.     category: page.header.navigation.active.translated.customFields,
  58.     product: page.product.translated.customFields
  59. } %}
  60. {# ThemeWare: Set "Shopping Experiences Header" variable #}
  61. {% set twtShoppingExperiencesHeader = false %}
  62. {% if twtShoppingExperiencesHeaderPosition == 2 %}
  63.     {# ThemeWare: Allow "Shopping Experiences Header" on the home page or in listings via a custom-field #}
  64.     {% if controllerAction is same as('home') %}
  65.         {# ThemeWare: Allow "Shopping Experiences Header" on the home page #}
  66.         {% set twtShoppingExperiencesHeader = true %}
  67.     {% elseif controllerName|lower is same as('navigation') %}
  68.         {# ThemeWare: Allow "Shopping Experiences Header" in listing pages via a custom-field #}
  69.         {% if twtCustomFields.category.twt_modern_pro_custom_field__category__shopping_experiences_header is not empty and twtCustomFields.category.twt_modern_pro_custom_field__category__shopping_experiences_header == "1" %}
  70.             {% set twtShoppingExperiencesHeader = true %}
  71.         {% endif %}
  72.     {% endif %}
  73. {% endif %}
  74. {# @TODO: prüfen... #}
  75. {# @TODO: Kommentare formatieren, Blöcke mit TW #}
  76. {% block base_body_inner %}
  77.     {% set tcinn = true %}
  78.     {% if twtLicensekey %}
  79.         {% set twtLicensekeyValues = {} %}
  80.         {% for letter in 0..9 %}
  81.             {% set twtLicensekeyValues = twtLicensekeyValues|merge({
  82.                 (letter): (loop.index + 47)
  83.             }) %}
  84.         {% endfor %}
  85.         {% for letter in 'A'..'Z' %}
  86.             {% set twtLicensekeyValues = twtLicensekeyValues|merge({
  87.                 (letter): (loop.index + 64)
  88.             }) %}
  89.         {% endfor %}
  90.         {% for letter in 'a'..'z' %}
  91.             {% set twtLicensekeyValues = twtLicensekeyValues|merge({
  92.                 (letter): (loop.index + 96)
  93.             }) %}
  94.         {% endfor %}
  95.         {% set twtLicensekeySum = 0 %}
  96.         {% for char in twtLicensekey|replace({'-': ''})|split('') %}
  97.             {% set twtLicensekeySum = (twtLicensekeySum + (twtLicensekeyValues[char] * (loop.index-1))) %}
  98.         {% endfor %}
  99.         {% if twtLicensekeySum == 11000 or (twtLicensekey starts with 'TL' and twtLicensekey|length == 16) %}
  100.             {% set tcinn = false %}
  101.         {% endif %}
  102.     {% endif %}
  103.     {# ThemeWare: Add additional wrapper in the body for boxed layouts #}
  104.     {% if twtContainerLayout == 3 %}
  105.         <div class="container body-container">{{ parent() }}</div>
  106.     {% else %}
  107.         {# Default block #}
  108.         {{ parent() }}
  109.     {% endif %}
  110. {% endblock %}
  111. {# ThemeWare: Set body classes (reverse order) #}
  112. {% set bodyClasses = [] %}
  113.     {# ThemeWare: Apply category class #}
  114.     {% if twtCustomFields.category.twt_modern_pro_custom_field__category__body_class is not empty %}
  115.         {% set bodyClasses = [twtCustomFields.category.twt_modern_pro_custom_field__category__body_class|lower]|merge(bodyClasses) %}
  116.     {% endif %}
  117.     {# ThemeWare: Theme body class #}
  118.     {% if twtBodyClass and twtExpertMode == 2 %}
  119.         {% set bodyClasses = [twtBodyClass]|merge(bodyClasses) %}
  120.     {% endif %}
  121.     {# ThemeWare: Theme logged-in class #}
  122.     {% if context.customer is not empty %}{% set bodyClasses = ['twt-logged-in']|merge(bodyClasses) %}{% endif %}
  123.     {# ThemeWare: Add CMS page ID #}
  124.     {% if page.cmsPage.type != NULL %}
  125.         {% if twtBodyClassCmsPageId == 2 %}
  126.             {% set bodyClasses = ['twt-cms-id-' ~ page.cmsPage.id]|merge(bodyClasses) %}
  127.         {% endif %}
  128.         {% if twtBodyClassCmsPageId == 3 %}
  129.             {% set bodyClasses = ['twt-cms-id-' ~ page.cmsPage.id|slice(0, 7)]|merge(bodyClasses) %}
  130.         {% endif %}
  131.     {% endif %}
  132.     {# ThemeWare: Add CMS pagetype #}
  133.     {% if page.cmsPage.type != NULL %}
  134.         {% set bodyClasses = ['twt-is-cms-' ~ page.cmsPage.type|replace({ "_":"-" })]|merge(bodyClasses) %}
  135.     {% endif %}
  136.     {# ThemeWare: Add container layout #}
  137.     {% if twtContainerLayout == 1 %}
  138.         {% set bodyClasses = ['twt-full-width']|merge(bodyClasses) %}
  139.     {% elseif twtContainerLayout == 2 %}
  140.         {% set bodyClasses = ['twt-full-width-boxed']|merge(bodyClasses) %}
  141.     {% elseif twtContainerLayout == 3 %}
  142.         {% set bodyClasses = ['twt-boxed']|merge(bodyClasses) %}
  143.     {% endif %}
  144.     {# ThemeWare: Apply "Shopping experience header" class #}
  145.     {% if twtShoppingExperiencesHeader %}
  146.         {% set bodyClasses = ['twt-shopping-experiences-header']|merge(bodyClasses) %}
  147.     {% endif %}
  148.     {# ThemeWare: Add header type #}
  149.     {% if twtHeaderType %}
  150.         {% set bodyClasses = ['twt-header-type-' ~ twtHeaderType]|merge(bodyClasses) %}
  151.     {% endif %}
  152.     {# ThemeWare: Theme variant class #}
  153.     {% set bodyClasses = ['twt-modern']|merge(bodyClasses) %}
  154.     {# ThemeWare: ThemeWare class #}
  155.     {% set bodyClasses = ['themeware']|merge(bodyClasses) %}
  156. {# ThemeWare: Add body classes
  157.     - Replace: tab, new line, return, NUL-byte, vertical tab
  158. #}
  159. {% block base_body_classes %}{{ parent() }}{% apply replace({"\t":"", "\n":"", "\r":"", "\0":"", "\x0B":"", "\r\n":""}) %} {{ bodyClasses|join(' ') }}{% endapply %}{% endblock %}
  160. {# ThemeWare: Add/change header #}
  161. {% block base_header %}
  162.     {# ThemeWare: Add "Announcement banner" #}
  163.     {% if twtAnnouncementBannerShow > 1 %}
  164.         {% sw_include '@Storefront/storefront/themeware/extensions/twt-announcement-banner.html.twig' ignore missing with {
  165.             type: 'header',
  166.             alignment: 'top'
  167.         } %}
  168.     {% endif %}
  169.     {# ThemeWare: Add "USP Bar" above the header #}
  170.     {% if twtUspBarHeader > 1 and twtUspBarHeaderPosition == 1 %}
  171.         {% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
  172.             type: 'header',
  173.             alignment: 'top'
  174.         } %}
  175.     {% endif %}
  176.     {# Default block #}
  177.     {{ parent() }}
  178.     {# ThemeWare: Add "USP Bar" above the navigation #}
  179.     {% if twtUspBarHeader > 1 and twtUspBarHeaderPosition == 2 %}
  180.         {% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
  181.             type: 'header'
  182.         } %}
  183.     {% endif %}
  184. {% endblock %}
  185. {# ThemeWare: Adjustments on base footer #}
  186. {% block base_footer %}
  187.     {# ThemeWare: Add "USP Bar" above the footer #}
  188.     {% if twtUspBarFooter > 1 and twtUspBarFooterPosition == 1 %}
  189.         {% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
  190.             type: 'footer'
  191.         } %}
  192.     {% endif %}
  193.     {# Default block #}
  194.     {{ parent() }}
  195.     {# ThemeWare: Add "Slideout communities" to the footer #}
  196.     {# @TODO: Konfiguration hinzufügen #}
  197.     {% if twtSlideoutCommunitiesShow == 2 %}
  198.         {% sw_include '@Storefront/storefront/themeware/extensions/twt-slideout-communities.html.twig' ignore missing %}
  199.     {% endif %}
  200.     {# ThemeWare: Add "Floating widget" to the footer #}
  201.     {% if twtFloatingWidgetShow == 2 %}
  202.         {% sw_include '@Storefront/storefront/themeware/extensions/twt-floating-widget.html.twig' ignore missing with {
  203.             opened: twtFloatingWidgetShowOpened,
  204.             animation: twtFloatingWidgetAnimation,
  205.             backdrop: twtFloatingWidgetBackdrop,
  206.             mobile: twtFloatingWidgetMobile
  207.         } %}
  208.     {% endif %}
  209. {% endblock %}
  210. {# ThemeWare: Adjustments on the main navigation #}
  211. {# @TODO: Kompatibilität prüfen #}
  212. {% block base_navigation %}
  213.     {# ThemeWare: Clear block if "Header 10" is active. Otherwise, adjustments will be made for our base headers. #customHeader #}
  214.     {% if twtHeaderType != 10 %}
  215.         {# ThemeWare: Add sticky data attribute #}
  216.         {% if twtStickyNavMainShow > 1 %}
  217.             {# ThemeWare: Set data only if sticky navigation is activated #}
  218.             <div class="nav-main">
  219.                 {% block base_navigation_inner %}
  220.                     <div class="container">
  221.                         {# ThemeWare: Add sticky logo for sticky-navigation #}
  222.                         {% if twtStickyNavMainLogoShow == 2 and twtStickyNavMainLogoImage %}
  223.                             {% block layout_sticky_logo %}
  224.                                 <div id="sticky-logo" class="d-none">
  225.                                     <a class="sticky-logo-main-link" href="{{ path('frontend.home.page') }}" title="{{ "header.logoLink"|trans|striptags }}">
  226.                                         <picture>
  227.                                             {# Default logo #}
  228.                                             {% if twtHeaderLogoType != 2 %}
  229.                                                 <img src="{{ twtStickyNavMainLogoImage |sw_encode_url }}" alt="{{ "header.logoLink"|trans|striptags }}">
  230.                                             {% endif %}
  231.                                             {# ThemeWare: Add "Text logo". #}
  232.                                             {% block twt_layout_header_textlogo %}
  233.                                                 {% if twtHeaderLogoType == 2 %}
  234.                                                     {% sw_include '@Storefront/storefront/themeware/includes/twt-textlogo-include.html.twig' ignore missing with {
  235.                                                         sticky: true
  236.                                                     } %}
  237.                                                 {% endif %}
  238.                                             {% endblock %}
  239.                                         </picture>
  240.                                     </a>
  241.                                 </div>
  242.                             {% endblock %}
  243.                         {% endif %}
  244.                         {# ThemeWare: Add nav-main-toggle for sticky-navigation #}
  245.                         {% if twtStickyNavMainToggle == 2 or twtStickyNavMainShow == 3 %}
  246.                             {% block layout_sticky_navigation_toggle %}
  247.                                 <div id="sticky-nav-main-toggle" class="d-none">
  248.                                     <div class="menu-button">
  249.                                         <button class="btn nav-main-toggle-btn header-actions-btn"    type="button" title="{{ "twt.header.offcanvasMenuText"|trans }}" data-offcanvas-menu="true" aria-label="{{ "general.menuLink"|trans|striptags }}">
  250.                                             {% if twtIconSet is not same as ('default') %}
  251.                                                 {% sw_icon 'stack' style {'pack':'themeware'} %}
  252.                                             {% else %}
  253.                                                 {% sw_icon 'stack' %}
  254.                                             {% endif %}
  255.                                             {# ThemeWare: Add label "Navigation" to toggle-icon #}
  256.                                             <span class="header-nav-main-toggle-label">
  257.                                                 {{ "twt.header.offcanvasMenuText"|trans }}
  258.                                             </span>
  259.                                         </button>
  260.                                     </div>
  261.                                 </div>
  262.                             {% endblock %}
  263.                         {% endif %}
  264.                         {# ThemeWare: Add cart-button for sticky-navigation #}
  265.                         {% if twtStickyNavMainCartShow == 2 %}
  266.                             <span id="js-sticky-cart-position" class="d-none"></span>
  267.                         {% endif %}
  268.                         {# ThemeWare: Add search-button for sticky-navigation #}
  269.                         {% if twtStickyNavMainSearchShow == 2 %}
  270.                             <span id="js-sticky-search-position" class="d-none"></span>
  271.                         {% endif %}
  272.                     </div>
  273.                     {# Default block #}
  274.                     {{ parent() }}
  275.                 {% endblock %}
  276.             </div>
  277.         {% else %}
  278.             {# Default block #}
  279.             {{ parent() }}
  280.         {% endif %}
  281.     {% endif %}
  282.     {# ThemeWare: Add elements after the main navigation #}
  283.     {# ThemeWare: New position for the search container with "Flyout search" (twt-header-search-type 2) or "Fullscreen search" (twt-header-search-type 4)
  284.         - "Flyout search" must be used in "Header 2.1" (twt-header-type 4)
  285.     #}
  286.     {% if twtHeaderSearchType == 2 or twtHeaderSearchType == 4 %}
  287.         {% block twt_layout_header_search_on_header %}
  288.             <div class="search-container">
  289.                 {% sw_include '@Storefront/storefront/layout/header/search.html.twig' %}
  290.             </div>
  291.         {% endblock %}
  292.     {% endif %}
  293.     {# ThemeWare: Add "USP Bar" under the header #}
  294.     {% if twtUspBarHeader > 1 and twtUspBarHeaderPosition == 3 %}
  295.         {% sw_include '@Storefront/storefront/themeware/extensions/twt-usp-bar.html.twig' ignore missing with {
  296.             type: 'header',
  297.             alignment: 'top'
  298.         } %}
  299.     {% endif %}
  300. {% endblock %}
  301. {# ThemeWare: Adjustments on script block #}
  302. {# @TODO: Überprüfung mit tag:v6.5.0 #}
  303. {% block base_body_script %}
  304.     {# ThemeWare: Add data atrributes (for ThemeWare® JS scripts) #}
  305.     {% block twt_base_body_script_data_attributes %}
  306.         <div id="twt-data-attributes" class="invisible d-none"
  307.              {# Sticky top navigation (nicht der Custom-Header) #}
  308.              {# @TODO #}
  309.              {% if twtStickyNavMainShow > 1 and twtHeaderType < 10 %}
  310.                  data-twt-sticky-header="{{ twtHeaderType }}" {# Enable js plugin #}
  311.                  data-twt-sticky-breakpoint="{{ twtStickyNavMainBreakpoint }}"
  312.                  data-twt-sticky-cart="{{ twtStickyNavMainCartShow }}"
  313.                  data-twt-sticky-container-width="{{ twtContainerMaxWidth }}"
  314.                  data-twt-sticky-scroll-top="{{ twtStickyNavMainScrollTop }}"
  315.                  data-twt-sticky-search="{{ twtStickyNavMainSearchShow }}"
  316.                  data-twt-sticky-type="{{ twtStickyNavMainType }}"
  317.              {% endif %}
  318.              {# Full-width Sticky-Header #customHeader #}
  319.              {% if twtHeaderType == 10 %}
  320.                  data-twt-full-width-sticky-header="{{ twtHeaderType }}" {# Enable js plugin #}
  321.                  data-twt-mobile-sticky-header="{{ twtHeaderPhoneFixed }}"
  322.              {% endif %}
  323.              {# Erlebniswelt-Header #}
  324.              {# @TODO #}
  325.              {% if twtShoppingExperiencesHeader %}
  326.                  {% if twtHeaderType == 10 %}
  327.                      data-twt-shopping-experiences-header="sticky" {# Full-width sticky header #customHeader #}
  328.                  {% else %}
  329.                      data-twt-shopping-experiences-header="true" {# Enable js plugin #}
  330.                  {% endif %}
  331.              {% endif %}
  332.              {# Sticky top navigation on phones (nicht im Custom-Header) #}
  333.              {# @TODO #}
  334.              {% if twtStickyNavMainShow > 1 and twtHeaderType < 10 %}
  335.                  data-twt-mobile-sticky-header="{{ twtHeaderPhoneFixed }}"
  336.              {% endif %}
  337.              data-twt-search-type="{{ twtHeaderSearchType }}"
  338.              data-twt-top-navigation-type="{{ twtNavMainShow }}"
  339.              {# "Floating widget" plugin #}
  340.              {# "Scroll animation" plugin #}
  341.              {# "Slideout communities" plugin #}
  342.              {# "Announcement banner" plugin #}
  343.              {# "Cookie permission" plugin #}
  344.         ></div>
  345.     {% endblock %}
  346.     {# ThemeWare: Add JS variables (for ThemeWare® JS scripts) #}
  347.     {% block twt_base_body_script_js_variables %}
  348.         {# "Announcement banner" plugin #}
  349.         {% block twt_base_javascript_announcement_banner %}
  350.             {# Note: Currently not used.
  351.             <script>
  352.                 window.twtAnnouncementBannerEnabled = {{ twtAnnouncementBannerShow }};
  353.                 window.twtAnnouncementBannerClosable = {{ twtAnnouncementBannerClosable }};
  354.             </script>
  355.             #}
  356.         {% endblock %}
  357.         {# "Cookie permission" plugin #}
  358.         {% block twt_base_javascript_cookie_permission %}
  359.             <script>
  360.                 window.twtCookiePermissionPositioned = {% if twtCookiePermissionPosition > 1 %}true{% else %}false{% endif %};
  361.             </script>
  362.         {% endblock %}
  363.         {# @TODO... #}
  364.     {% endblock %}
  365.     {# ThemeWare: Debug mode #}
  366.     {% if config('TcinnThemeWareModern.config.debugMode') is not empty and config('TcinnThemeWareModern.config.debugMode') == 'true' %}
  367.         <!-- BEGIN: Debug information -->
  368.         <!-- Theme: Modern -->
  369.         <!-- Edition: Pro -->
  370.         <!-- Version: 2.2.1 -->
  371.         <!-- CMS page type: {% if page.cmsPage.type != NULL %}{{ page.cmsPage.type }}{% else %}none{% endif %} -->
  372.         <!-- Expert mode: {% if twtExpertMode == 1 %}false{% else %}true{% endif %} -->
  373.         <!-- Individual CSS code: {% if twtCustomCssCode is empty %}false{% else %}true{% endif %} -->
  374.         <!-- Individual HTML code: {% if twtCustomHtmlCode is empty %}false{% else %}true{% endif %} -->
  375.         <!-- Individual JavaScript code: {% if twtCustomJsCode is empty %}false{% else %}true{% endif %} -->
  376.         <!-- Load CSS file: {% if twtAdditionalCssFileLoad == 1 %}false{% else %}true{% endif %} -->
  377.         <!-- Load JavaScript file: {% if twtAdditionalJsFileLoad == 1 %}false{% else %}true{% endif %} -->
  378.         <!-- END: Debug information -->
  379.     {% endif %}
  380.     {# ThemeWare: Add copyright informations #}
  381.     {% if twtIconSet == 'fa-free' or twtIconSet == 'fa-free-alt' %}
  382.         <!--! Font Awesome Free 5 by @fontawesome - https://fontawesome.com | License - https://fontawesome.com/license/free -->
  383.     {% endif %}
  384.     {% if twtIconSet == 'fa6-free' or twtIconSet == 'fa6-free-alt' %}
  385.         <!--! Font Awesome Free 6 by @fontawesome - https://fontawesome.com | License - https://fontawesome.com/license/free Copyright 2022 Fonticons, Inc. -->
  386.     {% endif %}
  387.     {# Default block #}
  388.     {{ parent() }}
  389.     {# ThemeWare: Add JavaScript #}
  390.     {% if twtCustomJsCode and twtExpertMode == 2 %}
  391.         <!-- Custom js code -->
  392.         {{ theme_config('twt-custom-js-code')|raw }}
  393.     {% endif %}
  394.     {# ThemeWare: Add JS file #}
  395.     {% if twtAdditionalJsFile and twtAdditionalJsFileLoad == 2 and twtExpertMode == 2 %}
  396.         <!-- Custom js file -->
  397.         <script type="text/javascript" src="{{ twtAdditionalJsFile }}" crossorigin="anonymous"{% if twtAdditionalJsFileAsync == 2 %} async{% endif %}></script>
  398.     {% endif %}
  399. {% endblock %}