UNPKG

@paperbits/common

Version:
35 lines (27 loc) 1.38 kB
import { ISiteService, SiteSettingsContract } from "../sites"; import { HtmlPage } from "./htmlPage"; import { HtmlPagePublisherPlugin } from "./htmlPagePublisherPlugin"; export class LinkedDataHtmlPagePublisherPlugin implements HtmlPagePublisherPlugin { constructor(private readonly siteService: ISiteService) { } public async apply(document: Document, page: HtmlPage): Promise<void> { let linkedDataObject: any = page.linkedData; /* Ensure rendering structured data for home page only */ if (page.permalink !== "/" && !linkedDataObject) { return; } if (!linkedDataObject) { const settings = await this.siteService.getSettings<any>(); const siteSettings: SiteSettingsContract = settings.site; linkedDataObject = { "@context": "http://www.schema.org", "@type": "Organization", "name": siteSettings.title, "description": siteSettings.description }; } const structuredDataScriptElement = document.createElement("script"); structuredDataScriptElement.setAttribute("type", "application/ld+json"); structuredDataScriptElement.innerHTML = JSON.stringify(linkedDataObject); document.head.appendChild(structuredDataScriptElement); } }