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 } }));
|
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