diff --git a/public/themes/dist_static/static/js/news2.js b/public/themes/dist_static/static/js/news2.js index 9d9c90d..d42f89f 100644 --- a/public/themes/dist_static/static/js/news2.js +++ b/public/themes/dist_static/static/js/news2.js @@ -1,11 +1,5 @@ //#region js/news.js var NEWS_CATEGORY_PARAM = "cat"; -var NEWS_CATEGORIES = [ - "all", - "insight", - "company", - "event" -]; function setActiveNav() { const pageNav = document.querySelector("[data-nav]")?.getAttribute("data-nav"); if (!pageNav) return; @@ -29,35 +23,17 @@ function newsDetailBackToggle() { } var featuredSwiper = null; function getCategoryFromQuery() { - const cat = new URLSearchParams(window.location.search).get(NEWS_CATEGORY_PARAM); - if (!cat || cat === "all") return "all"; - return NEWS_CATEGORIES.includes(cat) ? cat : "all"; -} -function setCategoryInUrl(cat) { - const url = new URL(window.location.href); - if (!cat || cat === "all") url.searchParams.delete(NEWS_CATEGORY_PARAM); - else url.searchParams.set(NEWS_CATEGORY_PARAM, cat); - window.history.replaceState(null, "", url); + return new URLSearchParams(window.location.search).get(NEWS_CATEGORY_PARAM) || ""; } function activateTab(cat) { + if (!cat) return; + const catStr = String(cat); document.querySelectorAll(".n-tabs__item").forEach((btn) => { - const isActive = (btn.dataset.cat || "all") === cat; + const isActive = String(btn.dataset.cat || "") === catStr; btn.classList.toggle("is-active", isActive); btn.setAttribute("aria-selected", isActive ? "true" : "false"); }); } -function filterNews(cat) { - const isMatch = (itemCat) => cat === "all" || itemCat === cat; - document.querySelectorAll(".n-featured__slide[data-category]").forEach((slide) => { - slide.hidden = !isMatch(slide.dataset.category); - }); - document.querySelectorAll(".n-card[data-category]").forEach((card) => { - card.hidden = !isMatch(card.dataset.category); - }); - const featured = document.querySelector(".n-featured"); - if (!featured) return; - featured.hidden = featured.querySelectorAll(".n-featured__slide:not([hidden])").length === 0; -} function updateFeaturedSwiper() { const root = document.querySelector(".n-featured"); const el = root?.querySelector(".n-featured__swiper"); @@ -83,25 +59,12 @@ function updateFeaturedSwiper() { } }); } -function applyCategory(cat) { - activateTab(cat); - filterNews(cat); - updateFeaturedSwiper(); -} function initNewsTabs() { const tabs = document.querySelector(".n-tabs"); if (!tabs) return; - applyCategory(getCategoryFromQuery()); - tabs.addEventListener("click", (event) => { - const btn = event.target.closest(".n-tabs__item"); - if (!btn) return; - const cat = btn.dataset.cat || "all"; - setCategoryInUrl(cat); - applyCategory(cat); - }); - window.addEventListener("popstate", () => { - applyCategory(getCategoryFromQuery()); - }); + const cat = getCategoryFromQuery(); + if (cat) activateTab(cat); + updateFeaturedSwiper(); } function newsCardClick() { $(".n-card, .n-featured").on("click", function(event) { diff --git a/public/themes/website/1/zh/demo/news.html b/public/themes/website/1/zh/demo/news.html index 217117b..e6d47e4 100644 --- a/public/themes/website/1/zh/demo/news.html +++ b/public/themes/website/1/zh/demo/news.html @@ -75,9 +75,16 @@ 新闻动态
- 全部 + {php} + $news_active_cat = (string)input('cat', ''); + if ($news_active_cat === '' || $news_active_cat === 'all') { + $news_active_cat = (string)($current_cate_id ?: ($news_cate_info['id'] ?? '')); + } + $news_all_cat = (string)($news_cate_info['id'] ?? ''); + {/php} + 全部 {hcTaglib:subcategory pid="$news_cate_info['id']" item="vo" sort=""} - {$vo.title} + {$vo.title} {/hcTaglib:subcategory}