header.html 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <!DOCTYPE html>
  2. <html lang="{:cms_html_lang($site_lang ?? '')}">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1">
  7. <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  8. <meta name="renderer" content="webkit">
  9. <meta name="force-rendering" content="webkit">
  10. <title>{if condition="isset($SEO['title']) && !empty($SEO['title'])"}{$SEO['title']}{/if}{$SEO['site_title']}</title>
  11. <meta name="keywords" content="{$SEO['keyword']}" />
  12. <meta name="description" content="{$SEO['description']}" />
  13. <link rel="stylesheet" href="/assets/xtu/vendor/bootstrap.min.css">
  14. <link rel="stylesheet" href="/assets/xtu/vendor/bootstrap-icons.min.css">
  15. <link rel="stylesheet" href="/assets/xtu/vendor/swiper-bundle.min.css">
  16. <link rel="stylesheet" href="/assets/xtu/shared.css?v=20260428-1538">
  17. <link rel="stylesheet" href="/assets/xtu/styles.css?v=20260706-mobile-hero-polish">
  18. </head>
  19. <body class="{if request()->action()=='index' && request()->controller()=='Index'}page-home{else /}page-inner{/if}">
  20. {php}$isHomePage = request()->action() == 'index' && request()->controller() == 'Index';$currentRegionShopUrl = cms_region_shop_url($site_region);$siteLogoLight = $cms_config['site_logo_light'] ?? '/assets/xtu/vendor/img/XTU-logo.png';$siteLogoDark = $cms_config['site_logo_dark'] ?? '';$siteLogoDark = $siteLogoDark ?: $siteLogoLight;{/php}
  21. <header class="site-header fixed-top{if !$isHomePage} page-navbar-solid{/if}" id="siteHeader" data-nav-mode="{if $isHomePage}home{else /}inner{/if}">
  22. <div class="nav-inner-wrap">
  23. <nav class="navbar navbar-expand-lg py-3">
  24. <div class="container-fluid px-0 align-items-center nav-shell">
  25. <a class="navbar-brand logo me-0" title="{$cms_config.site_name}" href="{:cms_lang_url(addon_url('cms/index/index'))}">
  26. <img class="site-logo-img" id="siteLogoImg" src="{$siteLogoLight}" data-logo-light="{$siteLogoLight}" data-logo-dark="{$siteLogoDark}" alt="{$cms_config.site_name}">
  27. </a>
  28. <div class="collapse navbar-collapse ms-lg-4" id="mainNavbar">
  29. <ul class="navbar-nav gap-lg-2 gap-xl-3 align-items-lg-center">
  30. {yzn module="cms" action="category" catid="0" order="listorder DESC" num="10" return="data"}
  31. {volist name="data" id="vo"}
  32. {yzn module="cms" action="category" catid="$vo['id']" order="listorder DESC,id ASC" num="100" return="navChildren"}
  33. <li class="nav-item {if !empty($navChildren)}dropdown nav-item-has-children{/if}">
  34. <a class="nav-link {if !empty($navChildren)}dropdown-toggle{/if}" href="{$vo.url}" {if !empty($navChildren)}data-nav-trigger="hover"{/if}>
  35. {$vo.catname}
  36. </a>
  37. {if !empty($navChildren)}
  38. <ul class="dropdown-menu border-0 shadow-lg rounded-0">
  39. {volist name="navChildren" id="child"}
  40. <li>
  41. <a class="dropdown-item" href="{$child.url}" target="{$child.target}" title="{$child.catname}">
  42. {$child.catname}
  43. </a>
  44. </li>
  45. {/volist}
  46. </ul>
  47. {/if}
  48. </li>
  49. {/yzn}
  50. {/volist}
  51. {/yzn}
  52. </ul>
  53. <div class="nav-mobile-extras d-lg-none">
  54. <div class="nav-mobile-premium-grid">
  55. <button class="nav-glass-btn nav-mobile-premium-btn" id="openSearchModalMobile">
  56. <span class="nav-glass-icon">
  57. <i class="bi bi-search"></i>
  58. </span>
  59. </button>
  60. <button class="nav-glass-btn nav-mobile-premium-btn" id="openLanguageModalMobile" >
  61. <span class="nav-glass-icon">
  62. <i class="bi bi-globe2"></i>
  63. </span>
  64. <span class="nav-glass-text">
  65. {if !empty($site_region)}{:cms_region_display_name($site_region)}{else /}{$site_lang|strtoupper}{/if}
  66. </span>
  67. </button>
  68. {if !empty($currentRegionShopUrl)}
  69. <a href="{$currentRegionShopUrl}" class="nav-glass-btn nav-glass-btn-shop nav-mobile-premium-btn nav-mobile-premium-wide" target="_blank" rel="noopener noreferrer">
  70. <span class="nav-glass-icon">
  71. <i class="bi bi-bag"></i>
  72. </span>
  73. <span class="nav-glass-text">
  74. {:cms_t('mall','商城')}
  75. </span>
  76. </a>
  77. {/if}
  78. </div>
  79. </div>
  80. </div>
  81. <div class="nav-right nav-right-mobile-compact d-flex align-items-center gap-2 ms-auto">
  82. <div class="nav-right-desktop-actions d-none d-lg-flex align-items-center gap-2" id="navDesktopActions">
  83. <button class="nav-glass-btn" id="openHeaderSearch" type="button">
  84. <span class="nav-glass-icon">
  85. <i class="bi bi-search">
  86. </i>
  87. </span>
  88. </button>
  89. <button class="nav-glass-btn nav-glass-btn-wide" id="openLanguageModal" aria-label="{:cms_t('switch_region','切换地区')}">
  90. <span class="nav-glass-icon">
  91. <i class="bi bi-globe2">
  92. </i>
  93. </span>
  94. <span class="nav-glass-text">
  95. {if !empty($site_region)}{:cms_region_display_name($site_region)}{else /}{$site_lang|strtoupper}{/if}
  96. </span>
  97. </button>
  98. {if !empty($currentRegionShopUrl)}
  99. <a href="{$currentRegionShopUrl}" class="nav-glass-btn nav-glass-btn-shop" target="_blank" rel="noopener noreferrer">
  100. <span class="nav-glass-icon">
  101. <i class="bi bi-bag">
  102. </i>
  103. </span>
  104. <span class="nav-glass-text">
  105. {:cms_t('mall','商城')}
  106. </span>
  107. </a>
  108. {/if}
  109. </div>
  110. <button class="navbar-toggler border-0 shadow-none px-0 ms-1" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="切换导航">
  111. <span class="navbar-toggler-icon">
  112. </span>
  113. </button>
  114. </div>
  115. <div class="header-inline-search" id="headerInlineSearch" aria-hidden="true">
  116. <form class="header-inline-search-form" action="{:cms_lang_url(addon_url('cms/search/index'))}" method="get" id="headerInlineSearchForm">
  117. <input type="hidden" name="modelid" value="0">
  118. <span class="header-inline-search-icon"><i class="bi bi-search"></i></span>
  119. <input type="search" name="q" id="headerInlineSearchInput" class="header-inline-search-input" placeholder="{:cms_t('search_quick_placeholder','搜索产品、服务、支持内容')}" maxlength="25" autocomplete="off" required>
  120. <button type="button" class="header-inline-search-close" id="closeHeaderSearch" aria-label="{:cms_t('close_search','关闭搜索')}">
  121. <i class="bi bi-x-lg"></i>
  122. </button>
  123. </form>
  124. </div>
  125. </div>
  126. </nav>
  127. </div>
  128. </header>