feat: add metadata to posts and projects

This commit is contained in:
Jack 2023-06-21 12:00:12 -07:00
parent 2f0ae31852
commit f6fbd90a17
No known key found for this signature in database
GPG Key ID: AFD9F14834097B8E
2 changed files with 61 additions and 0 deletions

View File

@ -96,3 +96,31 @@ export async function generateStaticParams() {
return slugs.map((slug) => ({ params: { id: slug } })); return slugs.map((slug) => ({ params: { id: slug } }));
} }
export async function generateMetadata({ params }: { params: { id: string } }) {
const { query, schema } = q("*")
.filterByType("post")
.filter(`slug.current == "${params.id}"`)
.grab$({
title: q.string(),
subtitle: q.string(),
publishedAt: q.date(),
mainImage: q("mainImage").grabOne$("asset->url", q.string().optional()),
})
.slice(0, 1);
const post = schema.parse(await client.fetch(query))[0];
return {
title: post.title,
description: post.subtitle,
image: post.mainImage,
date: post.publishedAt,
openGraph: {
type: "article",
publishedTime: post.publishedAt,
title: post.title,
description: post.subtitle,
},
};
}

View File

@ -99,3 +99,36 @@ export async function generateStaticParams() {
}, },
})); }));
} }
export async function generateMetadata({
params,
}: {
params: { slug: string };
}) {
const { query: projectQuery, schema: projectSchema } = q("*")
.filterByType("project")
.filter(`slug.current == "${params.slug}"`)
.grab$({
title: q.string(),
subtitle: q.string(),
slug: q.slug("slug"),
publishedAt: q.date(),
content: q.string(),
mainImage: q("mainImage").grabOne$("asset->url", q.string().optional()),
});
const project = projectSchema.parse(await client.fetch(projectQuery))[0];
return {
title: project.title,
description: project.subtitle,
image: project.mainImage,
date: project.publishedAt,
openGraph: {
type: "article",
publishedDate: project.publishedAt,
title: project.title,
description: project.subtitle,
},
};
}