From fba0d3deab2f1894ef40b259b0bc1ba6a1c33c7b Mon Sep 17 00:00:00 2001 From: curben Date: Mon, 3 Jun 2019 22:52:45 +0930 Subject: [PATCH] feat(openGraph): add post's published time to meta tag * Rename function name to camel case (standardjs) * Skip timezone conversion, but not using the date() helper * Open Graph tag is based on Wordpress Yoast, noticed through https://dvt.name/2019/06/03/hacking-the-casio-f-91w-to-handle-1000-psi/ --- themes/typing/layout/_partial/head.ejs | 4 ++-- themes/typing/layout/_partial/post/date.ejs | 3 ++- .../typing/layout/_partial/post/updated-date.ejs | 2 +- .../{open_graph_cloudinary.js => openGraph.js} | 16 +++++++++++++--- 4 files changed, 18 insertions(+), 7 deletions(-) rename themes/typing/scripts/{open_graph_cloudinary.js => openGraph.js} (87%) diff --git a/themes/typing/layout/_partial/head.ejs b/themes/typing/layout/_partial/head.ejs index 137904e..2a8b2e9 100644 --- a/themes/typing/layout/_partial/head.ejs +++ b/themes/typing/layout/_partial/head.ejs @@ -22,8 +22,8 @@ <% if (title) { %><%= title %> | <% } %><%= config.title %> <%/* Add Open Graph meta tags for easier sharing on social networking sites */%> - <%/* Modified for cloudinary compatibility */%> - <%- open_graph_cloudinary() %> + <%/* Modified from original source for compatibility with my blog */%> + <%- openGraph() %> <% if (theme.rss) { %> <% } %> diff --git a/themes/typing/layout/_partial/post/date.ejs b/themes/typing/layout/_partial/post/date.ejs index 890747b..9e0a38e 100644 --- a/themes/typing/layout/_partial/post/date.ejs +++ b/themes/typing/layout/_partial/post/date.ejs @@ -1,3 +1,4 @@ - + <%/* Date format is specified to skip timezone conversion */%> + diff --git a/themes/typing/layout/_partial/post/updated-date.ejs b/themes/typing/layout/_partial/post/updated-date.ejs index 9548579..20a1f4f 100644 --- a/themes/typing/layout/_partial/post/updated-date.ejs +++ b/themes/typing/layout/_partial/post/updated-date.ejs @@ -1,5 +1,5 @@ <%/* User-specified updated date */%> <%/* default post.updated is (almost) always is the time 'hexo generate' is executed */%> - + diff --git a/themes/typing/scripts/open_graph_cloudinary.js b/themes/typing/scripts/openGraph.js similarity index 87% rename from themes/typing/scripts/open_graph_cloudinary.js rename to themes/typing/scripts/openGraph.js index 310c4b4..30b789a 100644 --- a/themes/typing/scripts/open_graph_cloudinary.js +++ b/themes/typing/scripts/openGraph.js @@ -48,7 +48,8 @@ function openGraphHelper (options = {}) { const url = options.url || this.url const siteName = options.site_name || config.title const twitterCard = options.twitter_card || 'summary' - const updated = options.updated !== false ? options.updated || page.updated : false + const published = page.date || false + const updated = page.lastUpdated || false const language = options.language || page.lang || page.language || config.language let result = '' @@ -116,9 +117,18 @@ function openGraphHelper (options = {}) { result += og('og:image', path, false) }) + + if (published) { + if ((moment.isMoment(published) || moment.isDate(published)) && !isNaN(published.valueOf())) { + // Skip timezone conversion + result += og('article:published_time', moment(published).format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]')) + } + } + if (updated) { if ((moment.isMoment(updated) || moment.isDate(updated)) && !isNaN(updated.valueOf())) { - result += og('og:updated_time', updated.toISOString()) + result += og('article:modified_time', moment(updated).format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]')) + result += og('og:updated_time', moment(updated).format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]')) } } @@ -158,4 +168,4 @@ function openGraphHelper (options = {}) { return result.trim() } -hexo.extend.helper.register('open_graph_cloudinary', openGraphHelper) +hexo.extend.helper.register('openGraph', openGraphHelper)