45 lines
1.4 KiB
Plaintext
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>
|