diff options
Diffstat (limited to 'src/utils/schemas/blogSchema.ts')
-rw-r--r-- | src/utils/schemas/blogSchema.ts | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/utils/schemas/blogSchema.ts b/src/utils/schemas/blogSchema.ts index 7ff84d8..54e2fca 100644 --- a/src/utils/schemas/blogSchema.ts +++ b/src/utils/schemas/blogSchema.ts @@ -1,13 +1,24 @@ -import type { WithContext, Blog } from "schema-dts"; +import type { WithContext, CollectionPage } from "schema-dts"; +import type { CollectionEntry } from "astro:content"; export type BlogSchemaParams = { readonly siteUrl: string; readonly title: string; + readonly posts: CollectionEntry<"blog">[]; }; -export default ({ siteUrl, title }: BlogSchemaParams): WithContext<Blog> => ({ +export default ({ siteUrl, title, posts }: BlogSchemaParams): WithContext<CollectionPage> => ({ "@context": "https://schema.org", - "@type": "Blog", + "@type": "CollectionPage", "url": new URL("/blog/", siteUrl).toString(), "name": title, + "mainEntity": { + "@type": "ItemList", + "itemListElement": posts.map((post, index) => ({ + "@type": "ListItem", + "position": index + 1, + "url": new URL(`/blog/${post.slug}`, siteUrl).toString(), + "name": post.data.title, + })), + }, }); |