mirror of
https://github.com/KazooTTT/kazoottt-blog-v2.git
synced 2025-06-23 18:51:30 +08:00
refactor: Update routing and remove legacy blog/tag/category pages
This commit is contained in:
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
import type { CollectionEntry } from "astro:content";
|
|
||||||
import { getAllPosts, getUniqueCategories, getUniqueTags } from "@/data/post";
|
|
||||||
import { collectionDateSort } from "@/utils/date";
|
|
||||||
import type { GetStaticPaths, Page } from "astro";
|
|
||||||
|
|
||||||
export const getStaticPaths = (async ({ paginate }) => {
|
|
||||||
const MAX_POSTS_PER_PAGE = 20;
|
|
||||||
const MAX_TAGS = 7;
|
|
||||||
const MAX_CATEGORIES = 7;
|
|
||||||
const allPosts = await getAllPosts();
|
|
||||||
const uniqueTags = getUniqueTags(allPosts).slice(0, MAX_TAGS);
|
|
||||||
const uniqueCategories = getUniqueCategories(allPosts).slice(0, MAX_CATEGORIES);
|
|
||||||
const postsCount = allPosts.length;
|
|
||||||
return paginate(allPosts.sort(collectionDateSort), {
|
|
||||||
pageSize: MAX_POSTS_PER_PAGE,
|
|
||||||
props: { uniqueTags, uniqueCategories, postsCount },
|
|
||||||
});
|
|
||||||
}) satisfies GetStaticPaths;
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
page: Page<CollectionEntry<"post">>;
|
|
||||||
uniqueTags: string[];
|
|
||||||
uniqueCategories: string[];
|
|
||||||
postsCount: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
const currentPath = Astro.url.pathname;
|
|
||||||
const newPath = currentPath.replace("/blog/", "/posts/");
|
|
||||||
return Astro.redirect(newPath);
|
|
||||||
---
|
|
@ -1,18 +1,4 @@
|
|||||||
---
|
---
|
||||||
import { getAllPosts } from "@/data/post";
|
|
||||||
import type { GetStaticPaths, InferGetStaticPropsType } from "astro";
|
|
||||||
|
|
||||||
// if you're using an adaptor in SSR mode, getStaticPaths wont work -> https://docs.astro.build/en/guides/routing/#modifying-the-slug-example-for-ssr
|
|
||||||
export const getStaticPaths = (async () => {
|
|
||||||
const blogEntries = await getAllPosts();
|
|
||||||
return blogEntries.map((post) => ({
|
|
||||||
params: { slug: post.id },
|
|
||||||
props: { post },
|
|
||||||
}));
|
|
||||||
}) satisfies GetStaticPaths;
|
|
||||||
|
|
||||||
type Props = InferGetStaticPropsType<typeof getStaticPaths>;
|
|
||||||
|
|
||||||
const currentPath = Astro.url.pathname;
|
const currentPath = Astro.url.pathname;
|
||||||
const newPath = currentPath.replace("/blog/", "/posts/");
|
const newPath = currentPath.replace("/blog/", "/posts/");
|
||||||
return Astro.redirect(newPath);
|
return Astro.redirect(newPath);
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
import type { CollectionEntry } from "astro:content";
|
|
||||||
import { getAllPosts, getUniqueCategories } from "@/data/post";
|
|
||||||
import { collectionDateSort } from "@/utils/date";
|
|
||||||
import type { GetStaticPaths, Page } from "astro";
|
|
||||||
|
|
||||||
export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
|
|
||||||
const allPosts = await getAllPosts();
|
|
||||||
const sortedPosts = allPosts.sort(collectionDateSort);
|
|
||||||
const uniqueCategories = getUniqueCategories(sortedPosts);
|
|
||||||
|
|
||||||
return uniqueCategories.flatMap((category) => {
|
|
||||||
const filterPosts = sortedPosts.filter((post) => post.data.category === category);
|
|
||||||
return paginate(filterPosts, {
|
|
||||||
pageSize: 20,
|
|
||||||
params: { category },
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
page: Page<CollectionEntry<"post">>;
|
|
||||||
}
|
|
||||||
|
|
||||||
const currentPath = Astro.url.pathname;
|
|
||||||
const newPath = currentPath.replace("/category/", "/categories/");
|
|
||||||
return Astro.redirect(newPath);
|
|
||||||
---
|
|
@ -1,3 +0,0 @@
|
|||||||
---
|
|
||||||
return Astro.redirect("/categories");
|
|
||||||
---
|
|
5
src/pages/diary/[...slug].astro
Normal file
5
src/pages/diary/[...slug].astro
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
const currentPath = Astro.url.pathname;
|
||||||
|
const newPath = currentPath.replace("/diary/", "/notes/");
|
||||||
|
return Astro.redirect(newPath);
|
||||||
|
---
|
5
src/pages/tag/[...slug].astro
Normal file
5
src/pages/tag/[...slug].astro
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
const currentPath = Astro.url.pathname;
|
||||||
|
const newPath = currentPath.replace("/tag/", "/tags/");
|
||||||
|
return Astro.redirect(newPath);
|
||||||
|
---
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
import type { CollectionEntry } from "astro:content";
|
|
||||||
import { getAllPosts, getUniqueTags } from "@/data/post";
|
|
||||||
import { collectionDateSort } from "@/utils/date";
|
|
||||||
import type { GetStaticPaths, Page } from "astro";
|
|
||||||
|
|
||||||
export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
|
|
||||||
const allPosts = await getAllPosts();
|
|
||||||
const sortedPosts = allPosts.sort(collectionDateSort);
|
|
||||||
const uniqueTags = getUniqueTags(sortedPosts);
|
|
||||||
|
|
||||||
return uniqueTags.flatMap((tag) => {
|
|
||||||
const filterPosts = sortedPosts.filter((post) => post.data.tags.includes(tag));
|
|
||||||
return paginate(filterPosts, {
|
|
||||||
pageSize: 20,
|
|
||||||
params: { tag },
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
page: Page<CollectionEntry<"post">>;
|
|
||||||
}
|
|
||||||
|
|
||||||
const currentPath = Astro.url.pathname;
|
|
||||||
const newPath = currentPath.replace("/tag/", "/tags/");
|
|
||||||
return Astro.redirect(newPath);
|
|
||||||
---
|
|
@ -1,3 +0,0 @@
|
|||||||
---
|
|
||||||
return Astro.redirect("/tags");
|
|
||||||
---
|
|
Reference in New Issue
Block a user