vhAstro-Theme/src/pages/[...page].astro
2025-03-02 18:38:46 +08:00

45 lines
1.4 KiB
Plaintext

---
import { getCollection } from "astro:content";
import type { GetStaticPathsOptions } from "astro";
import setSearchJson from "../utils/vhSearch";
export async function getStaticPaths(options: GetStaticPathsOptions) {
const { paginate } = options;
const posts = (await getCollection("blog")).sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf());
// 生成 Search JSON 文件 ======
await setSearchJson(posts);
// 生成 Search JSON 文件 ======
// 隐藏的文章不显示
return paginate(
posts.filter(i => !i.data.hide),
{ pageSize: 15 }
);
}
const { page } = Astro.props;
const { data, ...page_data } = page;
// 页面 Info
import SITE_CONFIG from "../config";
const { Description } = SITE_CONFIG;
// 博客列表组件
import ArticleCard from "../components/ArticleCard.astro";
// 公共 Layout
import Layout from "../layouts/Layout.astro";
// Aside组件
import Aside from "../components/Aside.astro";
// 分页组件
import Pagination from "../components/Pagination.astro";
const currentPage = page_data.url.current.replace("/", "");
---
<Layout title={currentPage ? `第${currentPage}页文章` : ""} description={Description}>
<section class="vh-container">
<section class="article-list vh-animation vh-animation-init">
<!-- 文章列表 -->
{data.map((post, index) => <ArticleCard post={post} index={index} />)}
<!-- 分页 -->
<Pagination data={page_data.url} />
</section>
<Aside />
</section>
</Layout>