Fix profile page JSONLD

pull/6126/head
Chocobozzz 2023-12-08 08:41:14 +01:00
parent cf843c3f12
commit 2fde12d7e1
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 33 additions and 1 deletions

View File

@ -80,6 +80,10 @@ export class ActorHtml {
ogType, ogType,
twitterCard, twitterCard,
schemaType, schemaType,
jsonldProfile: {
createdAt: entity.createdAt,
updatedAt: entity.updatedAt
},
indexationPolicy: entity.Actor.isOwned() indexationPolicy: entity.Actor.isOwned()
? 'always' ? 'always'

View File

@ -11,10 +11,16 @@ type Tags = {
url?: string url?: string
schemaType?: string
ogType?: string ogType?: string
twitterCard?: 'player' | 'summary' | 'summary_large_image' twitterCard?: 'player' | 'summary' | 'summary_large_image'
schemaType?: string
jsonldProfile?: {
createdAt: Date
updatedAt: Date
}
list?: { list?: {
numberOfItems: number numberOfItems: number
} }
@ -195,6 +201,28 @@ export class TagsHtml {
static generateSchemaTagsOptions (tags: Tags, context: HookContext) { static generateSchemaTagsOptions (tags: Tags, context: HookContext) {
if (!tags.schemaType) return if (!tags.schemaType) return
if (tags.schemaType === 'ProfilePage') {
if (!tags.jsonldProfile) throw new Error('Missing `jsonldProfile` with ProfilePage schema type')
const profilePageSchema = {
'@context': 'http://schema.org',
'@type': tags.schemaType,
'dateCreated': tags.jsonldProfile.createdAt.toISOString(),
'dateModified': tags.jsonldProfile.updatedAt.toISOString(),
'mainEntity': {
'@id': '#main-author',
'@type': 'Person',
'name': tags.escapedTitle,
'description': tags.escapedTruncatedDescription,
'image': tags.image.url
}
}
return Hooks.wrapObject(profilePageSchema, 'filter:html.client.json-ld.result', context)
}
const schema = { const schema = {
'@context': 'http://schema.org', '@context': 'http://schema.org',
'@type': tags.schemaType, '@type': tags.schemaType,