76 lines
2.3 KiB
TypeScript
76 lines
2.3 KiB
TypeScript
import * as plugins from './websetup.plugins';
|
|
import * as interfaces from './interfaces';
|
|
|
|
import { Tag } from './websetup.classes.tag';
|
|
|
|
export class JsonLdTag extends Tag {
|
|
public static createCompanyLd(companyDataArg: plugins.tsclass.business.ICompany) {
|
|
// lets care about linked data
|
|
const companyLd = {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'Corporation',
|
|
name: companyDataArg.name,
|
|
alternateName: companyDataArg.name.replace(' GmbH', ''),
|
|
url: companyDataArg.contact.website,
|
|
logo: companyDataArg.contact.logoUrl,
|
|
contactPoint: {
|
|
'@type': 'ContactPoint',
|
|
telephone: companyDataArg.contact.phone,
|
|
contactType: 'customer service',
|
|
areaServed: 'DE',
|
|
availableLanguage: ['en', 'German'],
|
|
},
|
|
sameAs: [],
|
|
};
|
|
|
|
if (companyDataArg.contact.facebookUrl) {
|
|
companyLd.sameAs.push(companyDataArg.contact.facebookUrl);
|
|
}
|
|
|
|
if (companyDataArg.contact.twitterUrl) {
|
|
companyLd.sameAs.push(companyDataArg.contact.twitterUrl);
|
|
}
|
|
|
|
const ldTag = new JsonLdTag(companyLd);
|
|
return ldTag;
|
|
}
|
|
|
|
public static createNewsArticleLd (newsArticleArg: plugins.tsclass.content.IArticle) {
|
|
const newsArticleLd = {
|
|
"@context": "https://schema.org",
|
|
"@type": "NewsArticle",
|
|
"mainEntityOfPage": {
|
|
"@type": "WebPage",
|
|
"@id": window.location.href
|
|
},
|
|
"headline": "Article headline",
|
|
"image": [
|
|
newsArticleArg.featuredImageUrl
|
|
],
|
|
"datePublished": new Date(newsArticleArg.timestamp).toISOString(),
|
|
"dateModified": new Date(newsArticleArg.timestamp).toISOString(),
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": `${newsArticleArg.author.firstName} ${newsArticleArg.author.surName}`
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": newsArticleArg.author.surName, // TODO
|
|
"logo": {
|
|
"@type": "ImageObject",
|
|
"url": newsArticleArg.author.surName // TODO
|
|
}
|
|
},
|
|
"description": newsArticleArg.author.firstName
|
|
};
|
|
}
|
|
|
|
constructor(ldObjectArg: any) {
|
|
super();
|
|
const jsonLdElement = document.createElement('script');
|
|
jsonLdElement.type = 'application/ld+json';
|
|
jsonLdElement.text = JSON.stringify(JSON.stringify(ldObjectArg));
|
|
this.elementRef = jsonLdElement;
|
|
}
|
|
}
|