fix(core): update

This commit is contained in:
Philipp Kunz 2020-11-06 01:11:26 +00:00
parent 0294895f78
commit 7fa14ceabd
5 changed files with 51 additions and 29 deletions

View File

@ -3,6 +3,7 @@ import * as plugins from '../websetup.plugins';
export interface IMetaObject { export interface IMetaObject {
title: string; title: string;
description?: string; description?: string;
twitterHandle?: string;
canonicalDomain?: string; canonicalDomain?: string;
ldCompany?: plugins.tsclass.business.ICompany; ldCompany?: plugins.tsclass.business.ICompany;
ldProduct?: any; ldProduct?: any;

View File

@ -35,35 +35,33 @@ export class JsonLdTag extends Tag {
return ldTag; return ldTag;
} }
public static createNewsArticleLd (newsArticleArg: plugins.tsclass.content.IArticle) { public static createNewsArticleJsonLd(newsArticleArg: plugins.tsclass.content.IArticle) {
const newsArticleLd = { const newsArticleLd = {
"@context": "https://schema.org", '@context': 'https://schema.org',
"@type": "NewsArticle", '@type': 'NewsArticle',
"mainEntityOfPage": { mainEntityOfPage: {
"@type": "WebPage", '@type': 'WebPage',
"@id": window.location.href '@id': window.location.href,
}, },
"headline": "Article headline", headline: 'Article headline',
"image": [ image: [newsArticleArg.featuredImageUrl],
newsArticleArg.featuredImageUrl datePublished: new Date(newsArticleArg.timestamp).toISOString(),
], dateModified: new Date(newsArticleArg.timestamp).toISOString(),
"datePublished": new Date(newsArticleArg.timestamp).toISOString(), author: {
"dateModified": new Date(newsArticleArg.timestamp).toISOString(), '@type': 'Person',
"author": { name: `${newsArticleArg.author.firstName} ${newsArticleArg.author.surName}`,
"@type": "Person",
"name": `${newsArticleArg.author.firstName} ${newsArticleArg.author.surName}`
}, },
"publisher": { publisher: {
"@type": "Organization", '@type': 'Organization',
"name": newsArticleArg.author.surName, // TODO name: newsArticleArg.author.surName, // TODO
"logo": { logo: {
"@type": "ImageObject", '@type': 'ImageObject',
"url": newsArticleArg.author.surName // TODO url: newsArticleArg.author.surName, // TODO
}
}, },
"description": newsArticleArg.author.firstName },
description: newsArticleArg.author.firstName,
}; };
const ldTag = new JsonLdTag(newsArticleArg); const ldTag = new JsonLdTag(newsArticleLd);
return ldTag; return ldTag;
} }

View File

@ -1,6 +1,16 @@
import * as plugins from './websetup.plugins';
import { Tag } from './websetup.classes.tag'; import { Tag } from './websetup.classes.tag';
export class OpengraphTag extends Tag { export class OpengraphTag extends Tag {
public static createNewsArticleOgTags (newsArticleArg: plugins.tsclass.content.IArticle) {
const tagArray: OpengraphTag[] = [];
tagArray.push(new OpengraphTag('og:url', newsArticleArg.url));
tagArray.push(new OpengraphTag('og:title', newsArticleArg.title));
tagArray.push(new OpengraphTag('og:description', newsArticleArg.content));
tagArray.push(new OpengraphTag('og:image', newsArticleArg.featuredImageUrl));
return tagArray;
}
constructor(propertyNameArg: string, contentArg: string) { constructor(propertyNameArg: string, contentArg: string) {
super(); super();
const openGraphElement = document.createElement('meta'); const openGraphElement = document.createElement('meta');

View File

@ -31,12 +31,18 @@ export class TagLevel {
this.tagManagerRef = tagManagerRefArg; this.tagManagerRef = tagManagerRefArg;
} }
public addTag(tagArg: Tag) { public addTag(tagArg: Tag | Tag[]) {
if (tagArg instanceof Array) {
for (const tagArg2 of tagArg) {
this.addTag(tagArg2);
}
} else {
this.tags.push(tagArg); this.tags.push(tagArg);
if (this.state === 'enabled') { if (this.state === 'enabled') {
tagArg.appendToDom(); tagArg.appendToDom();
} }
} }
}
public async addCompanyInfo(companyDataArg: plugins.tsclass.business.ICompany) { public async addCompanyInfo(companyDataArg: plugins.tsclass.business.ICompany) {
this.addTag(JsonLdTag.createCompanyLd(companyDataArg)); this.addTag(JsonLdTag.createCompanyLd(companyDataArg));
@ -70,7 +76,8 @@ export class TagLevel {
} }
public addNewsArticleInfo(articleArg: plugins.tsclass.content.IArticle) { public addNewsArticleInfo(articleArg: plugins.tsclass.content.IArticle) {
this.addTag(JsonLdTag.createNewsArticleLd(articleArg)); this.addTag(JsonLdTag.createNewsArticleJsonLd(articleArg));
this.addTag(OpengraphTag.createNewsArticleOgTags(articleArg));
} }
public async enable() { public async enable() {

View File

@ -17,6 +17,12 @@ export class TagManager {
this.globalLevel.addTag(new MetaTag('google', 'notranslate')); this.globalLevel.addTag(new MetaTag('google', 'notranslate'));
this.globalLevel.addTag(new MetaTag('revisit-after', '1 days')); this.globalLevel.addTag(new MetaTag('revisit-after', '1 days'));
if (metaObjectArg.twitterHandle) {
this.globalLevel.addTag(new MetaTag('twitter:card', 'summary_large_image'));
this.globalLevel.addTag(new MetaTag('twitter:site', metaObjectArg.twitterHandle));
this.globalLevel.addTag(new MetaTag('twitter:creator', metaObjectArg.twitterHandle));
}
// base tag level // base tag level
this.baseLevel.title = metaObjectArg.title; this.baseLevel.title = metaObjectArg.title;
if (metaObjectArg.description) { if (metaObjectArg.description) {