--- import MainLayout from "../../layouts/MainLayout.astro"; import { getCollection, type CollectionEntry } from "astro:content"; // 获取景点内容集合 const attractions = await getCollection("attractions"); // 按照日期排序 const sortByDate = (a: T, b: T): number => { return new Date(b.data.pubDate || b.data.updatedDate || 0).getTime() - new Date(a.data.pubDate || a.data.updatedDate || 0).getTime(); }; // 按发布日期排序 const sortedAttractions = [...attractions].sort(sortByDate); // 提取所有标签 const allTags: {name: string, count: number}[] = []; sortedAttractions.forEach((attraction: CollectionEntry<"attractions">) => { attraction.data.tags.forEach((tag: string) => { const existingTag = allTags.find(t => t.name === tag); if (existingTag) { existingTag.count++; } else { allTags.push({ name: tag, count: 1 }); } }); }); // 按照标签出现次数排序 allTags.sort((a, b) => b.count - a.count); // 获取所有分类并计数 (使用可选链以防属性不存在) const categories: {name: string, count: number}[] = []; sortedAttractions.forEach((attraction: CollectionEntry<"attractions">) => { // 从city或title中提取分类信息(因为原数据模型似乎没有category字段) const category = attraction.data.city && attraction.data.city.length > 0 ? attraction.data.city[0] : '其他景点'; const existingCategory = categories.find(c => c.name === category); if (existingCategory) { existingCategory.count++; } else { categories.push({ name: category, count: 1 }); } }); // 按照分类出现次数排序 categories.sort((a, b) => b.count - a.count); // 获取所有城市并计数 (从city中提取城市信息) const cities: {name: string, count: number}[] = []; sortedAttractions.forEach((attraction: CollectionEntry<"attractions">) => { if (attraction.data.city && attraction.data.city.length > 0) { // 直接使用数组中的第一个城市,或默认值 const city = attraction.data.city[0] || '其他地区'; const existingCity = cities.find(c => c.name === city); if (existingCity) { existingCity.count++; } else { cities.push({ name: city, count: 1 }); } } }); // 按照城市出现次数排序 cities.sort((a, b) => b.count - a.count); // 从URL获取查询参数 - 在静态站点中只用于预填充输入框 const searchQuery = ''; // 对于静态生成的站点,我们在客户端处理搜索 const tagQuery = ''; // 标签筛选参数 const cityQuery = ''; // 城市筛选参数 // 分页逻辑 const itemsPerPage = 9; const page = 1; // 对于静态生成的页面,我们默认显示第一页,客户端再处理分页 // 搜索和筛选逻辑 - 在静态站点中,所有筛选都在客户端完成 const selectedCategory = ''; const selectedCity = ''; const selectedTags: string[] = []; const sortBy: 'date' | 'name' = 'date'; // 对于静态生成的页面,我们提供所有景点数据,客户端再进行筛选 let filteredAttractions = sortedAttractions; const totalPages = Math.ceil(filteredAttractions.length / itemsPerPage); const currentPageAttractions = filteredAttractions.slice((page - 1) * itemsPerPage, page * itemsPerPage); // 辅助函数,用于获取景点的分类(从city提取或默认值) const getCategory = (attraction: CollectionEntry<"attractions">) => { return attraction.data.city && attraction.data.city.length > 0 ? attraction.data.city[0] : '其他景点'; }; // 辅助函数,用于获取景点的城市(从city提取或默认值) const getCity = (attraction: CollectionEntry<"attractions">) => { return attraction.data.city && attraction.data.city.length > 0 ? attraction.data.city[attraction.data.city.length - 1] : '其他地区'; }; ---

河北 · 景观

ISO 100 | f/2.8 | 1/250s | 24-70mm

通过镜头捕捉河北的自然与人文之美,每一处景点都是一幅值得细细品味的画作

EXPLORE

筛选

按城市浏览

{cities.slice(0, 8).map(city => (
{city.name} ({city.count})
))}

特色标签

{allTags.slice(0, 15).map(tag => (
#{tag.name} ({tag.count})
))}
{currentPageAttractions.map((attraction, index) => { // 为每个卡片生成不同的颜色方案 const colorSchemes = [ { from: 'from-primary-900/80', via: 'via-primary-900/60', to: 'to-transparent', border: 'border-primary-200 dark:border-primary-800', hover: 'group-hover:border-primary-300 dark:group-hover:border-primary-700', badges: 'bg-primary-900/70 text-primary-100' }, { from: 'from-secondary-900/80', via: 'via-primary-900/60', to: 'to-transparent', border: 'border-secondary-200 dark:border-secondary-800', hover: 'group-hover:border-secondary-300 dark:group-hover:border-secondary-700', badges: 'bg-secondary-900/70 text-secondary-100' }, { from: 'from-accent-900/80', via: 'via-accent-900/60', to: 'to-transparent', border: 'border-accent-200 dark:border-accent-800', hover: 'group-hover:border-accent-300 dark:group-hover:border-accent-700', badges: 'bg-accent-900/70 text-accent-100' } ]; const colorScheme = colorSchemes[index % colorSchemes.length]; return ( ); })}
{totalPages > 1 && ( )}
"最美的景观并非仅存于远方,而在于观察者如何用心去发现"
— 河北风光摄影集 —