feat: add metadata to posts and projects
This commit is contained in:
parent
2f0ae31852
commit
f6fbd90a17
|
@ -96,3 +96,31 @@ export async function generateStaticParams() {
|
|||
|
||||
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,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user