All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 5s
287 lines
8.7 KiB
HTML
287 lines
8.7 KiB
HTML
<header class="header-PC">
|
||
<div id="header">
|
||
<!-- LOG -->
|
||
<div class="nav1">
|
||
<a href="/">
|
||
<img src="__IMAGES__/logo.png" />
|
||
</a>
|
||
</div>
|
||
<!--顶部导航栏 -->
|
||
<div class="nav2">
|
||
<nav id="booNavigation" class="booNavigation">
|
||
<ul>
|
||
{if condition="!empty($header_categorys)"}
|
||
<li class="navItem">
|
||
<a href="javascript:void(0);">{:lang_i18n('产品列表')}</a>
|
||
<img src="__IMAGES__/black-down.png" class="downimg" />
|
||
<ol class="navItemConten">
|
||
<!-- 左边子菜单-->
|
||
<ul class="navItem_cyleft">
|
||
{volist name="header_categorys" id="vo"}
|
||
<li class="{$key == 0 ? 'it_active' : ''}">
|
||
<a href="{:url('product/category', ['id' => $vo.id])}">{$vo.name}</a>
|
||
</li>
|
||
{/volist}
|
||
</ul>
|
||
<!-- 右边子菜单-->
|
||
{volist name="header_categorys" id="vo" key="idx"}
|
||
<div class="navItem_cyright" {eq name="idx" value="1" }style="display: block;"{else/}style="display: none;"{/eq}>
|
||
{if condition="!empty($vo.children)"}
|
||
{volist name="vo.children" id="vc"}
|
||
<dl class="nav_cyrightit">
|
||
<dt>
|
||
<a href="{:url('product/subcategory', ['id' => $vc.id])}">{$vc.name}</a>
|
||
</dt>
|
||
{if condition="!empty($vc.children)"}
|
||
{volist name="vc.children" id="vcc"}
|
||
<dd>
|
||
<a href="{:url('product/subcategory', ['id' => $vcc.id])}">{$vcc.name}</a>
|
||
</dd>
|
||
{/volist}
|
||
{/if}
|
||
</dl>
|
||
{/volist}
|
||
{/if}
|
||
</div>
|
||
{/volist}
|
||
</ol>
|
||
</li>
|
||
{/if}
|
||
{volist name="header_navigation" id="vo"}
|
||
<li class="navItem">
|
||
<a href="{$vo.link}" target="{$vo.blank==1?'_blank':'_self'}">{$vo.name}</a>
|
||
{if condition="!empty($vo.children)"}
|
||
<img src="__IMAGES__/black-down.png" class="downimg" />
|
||
<!--下拉菜单 -->
|
||
<ol class="navItemConten1">
|
||
{volist name="vo.children" id="voc"}
|
||
<li>
|
||
<a href="{$voc.link}" target="{$voc.blank==1?'_blank':'_self'}">{$voc.name}</a>
|
||
</li>
|
||
{/volist}
|
||
</ol>
|
||
{/if}
|
||
</li>
|
||
{/volist}
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
<!-- 顶部搜索/国家选择/商店-->
|
||
<div class="nav3">
|
||
<img src="__IMAGES__/icon-search.png" id="openModalBtn" class="searchimg" />
|
||
<div class="choesCountry">
|
||
<img src="__IMAGES__/icon-language.png" id="countrycheck" class="checkimg" />
|
||
<!--国家选择 -->
|
||
<div class="topCountry" id="top-country">
|
||
<ul>
|
||
<li class="closec">
|
||
<span class="closecountrybt">×</span>
|
||
</li>
|
||
{volist name="header_languages" id="vo"}
|
||
<a href="{$vo.lang_url}">
|
||
<li>
|
||
<div class="cico">
|
||
<img src="{$vo.lang_icon}" class="countryimg" />
|
||
</div>
|
||
<p class="countryName">{$vo.country_en_name} - {$vo.lang_en_name}</p>
|
||
</li>
|
||
</a>
|
||
{/volist}
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
{eq name=":cookie('think_lang')" value="en-us"}
|
||
{notempty name="basic_config['navigation_store_url']['value']"}
|
||
<a class="storetopbt" href="{$basic_config['navigation_store_url']['value']}" target="_blank">
|
||
<img src="__IMAGES__/shopico.png" class="storeImgico" />{:lang_i18n('店铺')}
|
||
</a>
|
||
{/notempty}
|
||
{/eq}
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 搜索弹框-->
|
||
<div class="searchmodalMian" id="scmodal">
|
||
<div class="searchmodalct">
|
||
<span class="close-btn">×</span>
|
||
<input type="text" name="keywords" id="serrchinput" autocomplete="off" />
|
||
<!-- 历史记录 -->
|
||
<div class="searchhistory">
|
||
<p class="h_title">{:lang_i18n('搜索记录')}</p>
|
||
<ul></ul>
|
||
</div>
|
||
<div class="popProduct">
|
||
<p class="h_title">{:lang_i18n('热销产品')}</p>
|
||
<div class="popmain">
|
||
{volist name="header_hot_products" id="vo"}
|
||
<div class="popitem">
|
||
<a href="{:url('product/detail', ['id' => $vo.id])}"><img src="{:thumb($vo.cover_image)}" class="popimg" /></a>
|
||
<div class="productName">{$vo.name}</div>
|
||
<div class="produc-dec">{$vo.short_name}</div>
|
||
</div>
|
||
{/volist}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<script type="text/javascript">
|
||
$(function() {
|
||
$('.header-PC #header .navItem>a').each(function(idx, item) {
|
||
var _item = $(item);
|
||
_item.removeClass('active');
|
||
if (_item.attr('href') && compareUrls(location.href, _item.get(0).href)) {
|
||
_item.addClass('active').siblings();
|
||
}
|
||
});
|
||
|
||
// 比较两个URL是否相等(支持只有path的情况,并处理有无.html后缀的情况)
|
||
function compareUrls(url1, url2) {
|
||
// 如果输入的是相对路径,添加当前域名
|
||
if (!url1.startsWith('http')) {
|
||
url1 = window.location.origin + (url1.startsWith('/') ? '' : '/') + url1;
|
||
}
|
||
if (!url2.startsWith('http')) {
|
||
url2 = window.location.origin + (url2.startsWith('/') ? '' : '/') + url2;
|
||
}
|
||
|
||
// 将两个URL转换为URL对象
|
||
const urlObj1 = new URL(url1);
|
||
const urlObj2 = new URL(url2);
|
||
|
||
// 获取路径名并移除末尾的斜杠
|
||
let path1 = urlObj1.pathname.replace(/\/$/, '');
|
||
let path2 = urlObj2.pathname.replace(/\/$/, '');
|
||
|
||
// 移除.html后缀
|
||
path1 = path1.replace(/\.html$/, '');
|
||
path2 = path2.replace(/\.html$/, '');
|
||
|
||
// 比较处理后的路径
|
||
return path1 === path2;
|
||
}
|
||
})
|
||
</script>
|
||
<script>
|
||
$(document).ready(function () {
|
||
// 搜索历史记录处理
|
||
function history(keywords) {
|
||
var history = localStorage.getItem('header_search_keywords');
|
||
if (!history) {
|
||
history = [];
|
||
} else {
|
||
history = JSON.parse(history);
|
||
}
|
||
// 记录搜索关键词
|
||
if (keywords) {
|
||
if (history.includes(keywords)) {
|
||
history.splice(history.indexOf(keywords), 1);
|
||
}
|
||
history.unshift(keywords);
|
||
if (history.length > 3) {
|
||
history.pop();
|
||
}
|
||
localStorage.setItem('header_search_keywords', JSON.stringify(history));
|
||
return history;
|
||
}
|
||
|
||
// 回显搜索历史记录
|
||
history.forEach(function (item) {
|
||
$('.searchhistory ul').append('<li><a href="{:url(\'product/search\')}?keywords=' + item + '">' + item + '</a></li>');
|
||
});
|
||
|
||
return history;
|
||
}
|
||
|
||
// 封装一个函数用于处理鼠标悬停显示和隐藏内容
|
||
function handleHover($element, $content) {
|
||
// 同时支持鼠标悬停和点击事件
|
||
$element
|
||
.mouseenter(function () {
|
||
$content.stop(true, true).slideDown(60);
|
||
})
|
||
.mouseleave(function () {
|
||
$content.stop(true, true).slideUp(60);
|
||
})
|
||
.click(function (e) {
|
||
// 阻止链接默认跳转(如果有链接的话)
|
||
if ($content.is(':visible')) {
|
||
$content.stop(true, true).slideUp(60);
|
||
} else {
|
||
$content.stop(true, true).slideDown(60);
|
||
}
|
||
// 防止点击事件冒泡到a标签
|
||
e.preventDefault();
|
||
e.stopPropagation();
|
||
});
|
||
}
|
||
|
||
// 处理产品列表的下拉菜单
|
||
var $firstNav = $('.navItem').eq(0);
|
||
if ($firstNav.find('.navItemConten').length) {
|
||
handleHover($firstNav, $firstNav.find('.navItemConten'));
|
||
}
|
||
|
||
// 鼠标移入左侧子菜单切换显示
|
||
$('.navItem_cyleft li').mouseenter(function () {
|
||
$(this).addClass('it_active').siblings().removeClass('it_active');
|
||
$('.navItem_cyright').hide();
|
||
$('.navItem_cyright').eq($(this).index()).show();
|
||
});
|
||
|
||
// 动态处理所有带有navItemConten1的导航项
|
||
$('.navItem').each(function () {
|
||
var $this = $(this);
|
||
var $dropdown = $this.find('.navItemConten1');
|
||
// 只给有下拉菜单的导航项绑定事件
|
||
if ($dropdown.length) {
|
||
handleHover($this, $dropdown);
|
||
}
|
||
});
|
||
|
||
// 点击搜索
|
||
$('#openModalBtn').click(function () {
|
||
$('#scmodal').toggle();
|
||
});
|
||
$('.close-btn').click(function () {
|
||
$('#scmodal').hide();
|
||
});
|
||
|
||
// 点击空白处关闭下拉菜单
|
||
$(document).click(function () {
|
||
$('.navItemConten, .navItemConten1, #top-country').slideUp(60);
|
||
});
|
||
|
||
// 防止下拉菜单内部点击触发空白处关闭事件
|
||
$('.navItemConten, .navItemConten1, #top-country').click(function (e) {
|
||
e.stopPropagation();
|
||
});
|
||
|
||
// 搜索历史记录回显
|
||
history();
|
||
|
||
// 执行搜索
|
||
$('#serrchinput').keydown(function (event) {
|
||
if (event.originalEvent.keyCode == 13) {
|
||
var keywords = $(this).val();
|
||
if (keywords == '') {
|
||
return false;
|
||
}
|
||
// 记录搜索关键词
|
||
history(keywords);
|
||
|
||
// 跳转到搜索页面
|
||
window.location.href = "{:url('product/search')}" + '?keywords=' + keywords;
|
||
}
|
||
});
|
||
|
||
// 点击选择国家
|
||
$('#countrycheck').click(function (e) {
|
||
$('#top-country').toggle();
|
||
e.stopPropagation();
|
||
});
|
||
$('.closecountrybt').click(function () {
|
||
$('#top-country').hide();
|
||
});
|
||
});
|
||
</script> |