--- import Layout from "../layouts/Layout.astro" // 全部秀场档案库:HBX 风左筛选 + 右 4 列商品卡。 // 筛选交互(设计师多选 / 系列类型 / 季节 / 年份 / 排序)全部通过 querystring 同步到后端, // 真正由 `/api/public/articles` 的 brand_ids / collection_type / season / year / sort 参数承担。 // 侧边栏品牌列表:featured=1 取 ~198 个有走秀档案的代表品牌,含 article_count 作为计数。 // dev 期(import.meta.env.DEV)自动兜底到本地后端,避免每次手敲环境变量;生产走 API_SSR 构建参数。 import { getBrands, getYears, type BrandEntry } from "../lib/api" let sidebarBrands: BrandEntry[] = [] let yearChips: number[] = [] // SSR 期从后端拉精选品牌(有走秀档案的代表品牌,含计数),运行期前端用同一封装再拉。 try { sidebarBrands = (await getBrands({ size: 300, only_with_articles: 1, featured: 1 })) .filter((b) => b.id && b.name) .sort((a, b) => a.name.localeCompare(b.name)) } catch {} // 年份 chips:从 back-end 拉最近 30 条秀场,提取独特年份(按降序去重),构造最近 6 年。 // 为 SSR 提供稳健的初始值,运行期会按筛选再补;不可达时给一组 fallback 区间。 let yearSeed = [2026, 2025, 2024, 2023, 2022, 2021] try { const ys = await getYears(30) if (ys.length) yearChips = ys } catch {} if (!yearChips.length) yearChips = yearSeed // URL 链接:保留当前路径以便 client-side filter 同步到地址栏 const pathname = "/shows" ---
Runway Archive · 2026 Edition

All Shows

{Array.from({ length: 12 }, () => (
))}