0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-06 22:40:14 -05:00

Moved post excerpt logic to an excerpt file

- This is content negotiation logic and shouldn't be inline
- TODO: this needs tests
This commit is contained in:
Hannah Wolfe 2021-07-01 11:06:47 +01:00
parent fbf0636936
commit 9fbc0b7f2b
No known key found for this signature in database
GPG key ID: 9F8C7532D0A6BA55
2 changed files with 23 additions and 21 deletions

View file

@ -0,0 +1,21 @@
const generateExcerpt = require('./generate-excerpt');
function getExcerpt(data) {
// NOTE: should use 'post' OR 'page' once https://github.com/TryGhost/Ghost/issues/10042 is resolved
if (!data.post) {
return;
}
// There's a specific order for description fields (not <meta name="description" /> !!) in structured data
// and schema.org which is used the description fields (see https://github.com/TryGhost/Ghost/issues/8793):
// 1. CASE: custom_excerpt is populated via the UI
// 2. CASE: no custom_excerpt, but meta_description is poplated via the UI
// 3. CASE: fall back to automated excerpt of 50 words if neither custom_excerpt nor meta_description is provided
// @TODO: https://github.com/TryGhost/Ghost/issues/10062
const customExcerpt = data.post.excerpt || data.post.custom_excerpt;
const metaDescription = data.post.meta_description;
const fallbackExcerpt = data.post.html ? generateExcerpt(data.post.html, {words: 50}) : '';
return customExcerpt ? customExcerpt : metaDescription ? metaDescription : fallbackExcerpt;
}
module.exports = getExcerpt;

View file

@ -24,7 +24,7 @@ const getOgImage = require('./og_image');
const getTwitterImage = require('./twitter_image');
const getStructuredData = require('./structured_data');
const getSchema = require('./schema');
const generateExcerpt = require('./generate-excerpt');
const getExcerpt = require('./excerpt');
function getMetaData(data, root) {
const metaData = {
@ -37,6 +37,7 @@ function getMetaData(data, root) {
rssUrl: getRssUrl(data, true),
metaTitle: getTitle(data, root),
metaDescription: getDescription(data, root) || null,
excerpt: getExcerpt(data),
coverImage: {
url: getCoverImage(data, true)
},
@ -73,26 +74,6 @@ function getMetaData(data, root) {
}
};
let customExcerpt;
let metaDescription;
let fallbackExcerpt;
// TODO: cleanup these if statements
// NOTE: should use 'post' OR 'page' once https://github.com/TryGhost/Ghost/issues/10042 is resolved
if (data.post) {
// There's a specific order for description fields (not <meta name="description" /> !!) in structured data
// and schema.org which is used the description fields (see https://github.com/TryGhost/Ghost/issues/8793):
// 1. CASE: custom_excerpt is populated via the UI
// 2. CASE: no custom_excerpt, but meta_description is poplated via the UI
// 3. CASE: fall back to automated excerpt of 50 words if neither custom_excerpt nor meta_description is provided
// @TODO: https://github.com/TryGhost/Ghost/issues/10062
customExcerpt = data.post.excerpt || data.post.custom_excerpt;
metaDescription = data.post.meta_description;
fallbackExcerpt = data.post.html ? generateExcerpt(data.post.html, {words: 50}) : '';
metaData.excerpt = customExcerpt ? customExcerpt : metaDescription ? metaDescription : fallbackExcerpt;
}
if (data.post && data.post.primary_author && data.post.primary_author.name) {
metaData.authorName = data.post.primary_author.name;
}