Skip to content

Commit

Permalink
fix: handle blog posts pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
clemlatz committed Jan 17, 2025
1 parent 71a062b commit d4a73ca
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions src/pages/page/[slug].astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
import config from "@/config/config.json";
import Base from "@/layouts/Base.astro";
import Pagination from "@/layouts/components/Pagination.astro";
import Posts from "@/layouts/Posts.astro";
import { getSinglePage } from "@/lib/contentParser.astro";
import { sortByDate } from "@/lib/utils/sortFunctions";
export async function getStaticPaths() {
const posts = await getSinglePage("posts");
const totalPages = Math.ceil(posts.length / config.settings.pagination);
const paths = [];
for (let i = 1; i < totalPages; i++) {
paths.push({
params: {
slug: (i + 1).toString(),
},
});
}
return paths;
}
const { slug } = Astro.params;
const posts = await getSinglePage("posts");
const sortedPosts = sortByDate(posts);
const totalPages = Math.ceil(posts.length / config.settings.pagination);
const currentPage = slug && !isNaN(Number(slug)) ? Number(slug) : 1;
const indexOfLastPost = currentPage * config.settings.pagination;
const indexOfFirstPost = indexOfLastPost - config.settings.pagination;
const currentPosts = sortedPosts.slice(indexOfFirstPost, indexOfLastPost);
---

<Base>
<section class="section">
<div class="container">
<Posts className="mb-16" posts={currentPosts} />
<Pagination totalPages={totalPages} currentPage={currentPage} />
</div>
</section>
</Base>

0 comments on commit d4a73ca

Please sign in to comment.