mirror of
https://github.com/ChenQihan666/MyBlog-Next.git
synced 2026-08-14 11:29:33 +08:00
feat: og image routes
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
import type { APIRoute } from "astro";
|
||||||
|
import { generateOgImageForSite } from "@utils/generateOgImages";
|
||||||
|
|
||||||
|
export const GET: APIRoute = async () =>
|
||||||
|
new Response(await generateOgImageForSite(), {
|
||||||
|
headers: { "Content-Type": "image/png" },
|
||||||
|
});
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import type { APIRoute } from "astro";
|
||||||
|
import { getCollection, type CollectionEntry } from "astro:content";
|
||||||
|
import { generateOgImageForPost } from "@utils/generateOgImages";
|
||||||
|
import { slugifyStr } from "@utils/slugify";
|
||||||
|
|
||||||
|
export async function getStaticPaths() {
|
||||||
|
const posts = await getCollection("blog").then(p =>
|
||||||
|
p.filter(({ data }) => !data.draft && !data.ogImage)
|
||||||
|
);
|
||||||
|
|
||||||
|
return posts.map(post => ({
|
||||||
|
params: { slug: slugifyStr(post.data.title) },
|
||||||
|
props: post,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
export const GET: APIRoute = async ({ props }) =>
|
||||||
|
new Response(await generateOgImageForPost(props as CollectionEntry<"blog">), {
|
||||||
|
headers: { "Content-Type": "image/png" },
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user