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:
parent
fbf0636936
commit
9fbc0b7f2b
2 changed files with 23 additions and 21 deletions
21
core/frontend/meta/excerpt.js
Normal file
21
core/frontend/meta/excerpt.js
Normal 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;
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue