$(function () { // 获取url地址栏参数函数 function getUrlParams() { const url = window.location.href; // 判断是否有参数 if (url.indexOf("?") === -1) { return {}; } const params = url.split("?")[1]; const paramsArr = params.split("&"); const paramsObj = {}; paramsArr.forEach((item) => { const key = item.split("=")[0]; const value = item.split("=")[1]; // 解析中文 paramsObj[key] = decodeURI(value); }); return paramsObj; } //设置cookie function setCookie(c_name, value, expiredays = 1) { const exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + "=" + value + (";expires=" + exdate.toGMTString()); } // 判断首页是否为推荐页面 function isRecommend() { const urlParams = getUrlParams(); if (urlParams.recommend_c) { setCookie("recommend_c", urlParams.recommend_c); } } isRecommend(); let bannerData = []; let bannerTextTimer = null; const updateBannerText = (index) => { if (!Array.isArray(bannerData) || bannerData.length === 0) { return; } const idx = index >= 0 && index < bannerData.length ? index : 0; const item = bannerData[idx] || {}; // 标签渲染:标题上方的小块标签 const $tagsWrap = $("#bannerTags"); if ($tagsWrap.length) { $tagsWrap.empty(); const rawTags = item.tags || ""; const tags = rawTags .split(/[,,]/) .map((t) => t.trim()) .filter((t) => t); tags.forEach((tag) => { $tagsWrap.append( `` ); }); if (tags.length === 0) { $tagsWrap.hide(); } else { $tagsWrap.show(); } } $("#bannerTitle").text(item.title || ""); $("#bannerDesc").text(item.description || ""); const $btn = $("#bannerButton"); if (item.button_text) { const link = item.button_link || item.url || "javascript:;"; const target = item.button_blank ? "_blank" : "_self"; $btn .text(item.button_text) .attr("href", link) .attr("target", target) .show(); } else { $btn.hide(); } }; // 简单的文案轮播(不再使用 Swiper 图片,仅轮播标题/描述/按钮) const startBannerTextLoop = () => { if (!Array.isArray(bannerData) || bannerData.length === 0) { return; } let current = 0; // 初始化先展示第一条 updateBannerText(current); // 清理旧定时器 if (bannerTextTimer) { clearInterval(bannerTextTimer); bannerTextTimer = null; } // 只有一条时不需要轮播 if (bannerData.length === 1) { return; } bannerTextTimer = setInterval(() => { current = (current + 1) % bannerData.length; // 淡入动画:先让文案透明,再渐显 const $copy = $(".banner-copy"); $copy .stop(true, true) .css({ opacity: 0 }) .animate({ opacity: 1 }, 400); updateBannerText(current); }, 5000); }; // 设置首页函数:直接使用服务端注入的 window.__themeCommon(SSR 数据),避免再次请求配置 function setIndexData() { const commentObj = window.__themeCommon ? window.__themeCommon : (sessionStorage.commentData ? JSON.parse(sessionStorage.commentData) : {}); bannerData = commentObj.banner || []; // 仅轮播文案 startBannerTextLoop(); if (Array.isArray(commentObj.honor) && commentObj.honor.length > 0) { commentObj.honor.forEach((item) => { $("#certBox").append(`
${item.name}
${item.name}
${item.name}