mirror of
https://github.com/valentineus/popov.link.git
synced 2025-10-23 01:24:06 +03:00
feat: enhance blog post and page schema with new properties
- Added optional `basedOn` field to blog post schema for better content attribution. - Updated blog post markdown to include `basedOn` reference for improved context. - Refactored page schema to replace deprecated website schema, enhancing structured data representation. - Adjusted 404 and index pages to utilize the new page schema for consistency and SEO improvements.
This commit is contained in:
@@ -5,13 +5,14 @@ export type BlogPostSchemaParams = {
|
||||
readonly dateModified: string;
|
||||
readonly datePublished: string;
|
||||
readonly description: string;
|
||||
readonly isBasedOn?: string;
|
||||
readonly lang: string;
|
||||
readonly siteUrl: string;
|
||||
readonly slug: string;
|
||||
readonly title: string;
|
||||
};
|
||||
|
||||
export default ({ siteUrl, slug, title, description, datePublished, dateModified, author, lang }: BlogPostSchemaParams): WithContext<BlogPosting> => ({
|
||||
export default ({ siteUrl, slug, title, description, datePublished, dateModified, author, lang, isBasedOn }: BlogPostSchemaParams): WithContext<BlogPosting> => ({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BlogPosting",
|
||||
"url": new URL(`/blog/${slug}`, siteUrl).toString(),
|
||||
@@ -28,4 +29,5 @@ export default ({ siteUrl, slug, title, description, datePublished, dateModified
|
||||
"@type": "WebPage",
|
||||
"@id": new URL(`/blog/${slug}`, siteUrl).toString(),
|
||||
},
|
||||
...(isBasedOn && { isBasedOn: isBasedOn }),
|
||||
});
|
||||
|
@@ -14,6 +14,8 @@ export default ({ siteUrl, title, posts }: BlogSchemaParams): WithContext<Collec
|
||||
"name": title,
|
||||
"mainEntity": {
|
||||
"@type": "ItemList",
|
||||
"itemListOrder": "https://schema.org/ItemListOrderDescending",
|
||||
"numberOfItems": posts.length,
|
||||
"itemListElement": posts.map((post, index) => ({
|
||||
"@type": "ListItem",
|
||||
"position": index + 1,
|
||||
|
23
src/utils/schemas/pageSchema.ts
Normal file
23
src/utils/schemas/pageSchema.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { WithContext, WebPage } from "schema-dts";
|
||||
|
||||
export type WebsiteSchemaParams = {
|
||||
readonly description: string;
|
||||
readonly page: string;
|
||||
readonly siteUrl: string;
|
||||
readonly title: string;
|
||||
readonly lang: string;
|
||||
};
|
||||
|
||||
export default ({ siteUrl, page, title, description, lang }: WebsiteSchemaParams): WithContext<WebPage> => ({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": new URL(page, siteUrl).toString(),
|
||||
"url": new URL(page, siteUrl).toString(),
|
||||
"name": title,
|
||||
"description": description,
|
||||
"inLanguage": lang,
|
||||
"mainEntity": {
|
||||
"@type": "WebSite",
|
||||
"@id": new URL("/", siteUrl).toString(),
|
||||
},
|
||||
});
|
@@ -1,15 +0,0 @@
|
||||
import type { WithContext, WebSite } from "schema-dts";
|
||||
|
||||
export type WebsiteSchemaParams = {
|
||||
readonly description: string;
|
||||
readonly siteUrl: string;
|
||||
readonly title: string;
|
||||
};
|
||||
|
||||
export default ({ siteUrl, title, description }: WebsiteSchemaParams): WithContext<WebSite> => ({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebSite",
|
||||
"url": new URL("/", siteUrl).toString(),
|
||||
"name": title,
|
||||
"description": description,
|
||||
});
|
Reference in New Issue
Block a user