feat: 文章分页
This commit is contained in:
30
src/pages/page/[...page].astro
Normal file
30
src/pages/page/[...page].astro
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
import Layout from "@/layouts/Layout.astro";
|
||||
import PostList from "@/components/PostList.astro";
|
||||
import type {Post} from "@/types/post";
|
||||
import {http} from "@/lib/request";
|
||||
import {metadata} from "@/consts.ts";
|
||||
|
||||
const {page} = Astro.params
|
||||
|
||||
if (isNaN(Number(page))) {
|
||||
return Astro.redirect('/')
|
||||
}
|
||||
|
||||
const {list, total} = await http.get<ApiPageResponse<Post>>("post", {
|
||||
searchParams: {
|
||||
page,
|
||||
page_size: metadata.postPageSize
|
||||
}
|
||||
});
|
||||
|
||||
const totalPage = Math.ceil(total / metadata.postPageSize)
|
||||
|
||||
if (totalPage < page) {
|
||||
return Astro.redirect('/404')
|
||||
}
|
||||
---
|
||||
|
||||
<Layout>
|
||||
<PostList posts={list} page={Number(page)} totalPage={totalPage}/>
|
||||
</Layout>
|
||||
Reference in New Issue
Block a user