diff --git a/_config.yml b/_config.yml index cab31b5..ad0c20c 100644 --- a/_config.yml +++ b/_config.yml @@ -1023,6 +1023,10 @@ Open_Graph_meta: # fb_admins: # fb_app_id: +# Structured Data +# https://developers.google.com/search/docs/guides/intro-structured-data +structured_data: true + # Add the vendor prefixes to ensure compatibility css_prefix: true diff --git a/layout/includes/head.pug b/layout/includes/head.pug index 56c29f0..59f3782 100644 --- a/layout/includes/head.pug +++ b/layout/includes/head.pug @@ -25,6 +25,9 @@ meta(name="theme-color" content=themeColor) //- Open_Graph include ./head/Open_Graph.pug +//- Structured Data +include ./head/structured_data.pug + !=favicon_tag(theme.favicon || config.favicon) link(rel="canonical" href=urlNoIndex(null,config.pretty_urls.trailing_index,config.pretty_urls.trailing_html)) diff --git a/layout/includes/head/structured_data.pug b/layout/includes/head/structured_data.pug new file mode 100644 index 0000000..cacb02c --- /dev/null +++ b/layout/includes/head/structured_data.pug @@ -0,0 +1,34 @@ +if theme.structured_data && page.layout === 'post' + - + // use json-ld to add structured data + + const title = page.title + const url = page.permalink + const imageVal = page.cover_type === 'img' ? page.cover : theme.avatar.img + const image = imageVal ? full_url_for(imageVal) : '' + const datePublished = page.date.toISOString() + const dateModified = (page.updated || page.date).toISOString() + const author = page.copyright_author || config.author + const authorHrefVal = page.copyright_author_href || theme.post_copyright.author_href || site.url; + const authorHref = full_url_for(authorHrefVal); + + const jsonLd = { + "@context": "https://schema.org", + "@type": "BlogPosting", + "headline": title, + "url": url, + "image": image, + "datePublished": datePublished, + "dateModified": dateModified, + "author": [{ + "@type": "Person", + "name": author, + "url": authorHref + }] + }; + + jsonLdScript = JSON.stringify(jsonLd, null, 2); + - + + script(type="application/ld+json"). + !{jsonLdScript} diff --git a/scripts/events/merge_config.js b/scripts/events/merge_config.js index fe04871..bff1125 100644 --- a/scripts/events/merge_config.js +++ b/scripts/events/merge_config.js @@ -567,6 +567,7 @@ hexo.extend.filter.register('before_generate', () => { enable: true, option: null }, + structured_data: true, css_prefix: true, inject: { head: null,