0
mirror of https://github.com/valentineus/popov.link.git synced 2025-07-04 00:20:26 +03:00

refactor: enhance PostElement structure and update blog schema

- Wrapped the post link in an <article> tag for improved semantic structure.
- Updated blogSchema to include posts for better structured data representation.
- Adjusted the blog index to utilize the new posts parameter for enhanced SEO.
This commit is contained in:
2025-06-14 11:01:42 +00:00
parent 1c15151ef5
commit 9777d996d1
3 changed files with 25 additions and 11 deletions

View File

@ -25,12 +25,14 @@ const formattedDate = dayjs(post.data.pubDate.toString()).format("MMMM DD, YYYY"
</style> </style>
<li> <li>
<a href={`/blog/${post.slug}`} lang={post.data.lang}>{post.data.title}</a> <article>
<div> <a href={`/blog/${post.slug}`} lang={post.data.lang}>{post.data.title}</a>
<small> <div>
<time datetime={post.data.pubDate.toISOString()} lang="en">{formattedDate}</time> <small>
<span>•</span> <time datetime={post.data.pubDate.toISOString()} lang="en">{formattedDate}</time>
<span>{remarkPluginFrontmatter.minutesRead}</span> <span></span>
</small> <span>{remarkPluginFrontmatter.minutesRead}</span>
</div> </small>
</div>
</article>
</li> </li>

View File

@ -30,6 +30,7 @@ const lang = "en";
const schema = blogSchema({ const schema = blogSchema({
siteUrl: new URL("/", Astro.site).toString(), siteUrl: new URL("/", Astro.site).toString(),
title, title,
posts,
}); });
--- ---

View File

@ -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 = { export type BlogSchemaParams = {
readonly siteUrl: string; readonly siteUrl: string;
readonly title: 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", "@context": "https://schema.org",
"@type": "Blog", "@type": "CollectionPage",
"url": new URL("/blog/", siteUrl).toString(), "url": new URL("/blog/", siteUrl).toString(),
"name": title, "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,
})),
},
}); });