1
0
mirror of https://github.com/TryGhost/Ghost.git synced 2024-12-18 16:01:40 +03:00

Removed leading/trailing HR's when rendering email content

refs https://github.com/TryGhost/Team/issues/1007

- the new `email-cta` card allows surrounding dividers to be added when rendering, however if the card is at the beginning or end of the post then these would double-up with the already existing dividers at the beginning and end of the post content in the email template
- not wanting leading/trailing HR's is specific to the email template so it made sense to adjust the renderer output in Ghost's email generating rather than forcing all mobiledoc->html rendering to remove leading/trailing HR's
This commit is contained in:
Kevin Ansfield 2021-08-24 19:38:29 +01:00
parent 5e83d87ab9
commit 946ae43a15

View File

@ -218,6 +218,14 @@ const serialize = async (postModel, options = {isBrowserPreview: false, apiVersi
} }
post.html = mobiledocLib.mobiledocHtmlRenderer.render(JSON.parse(post.mobiledoc), {target: 'email'}); post.html = mobiledocLib.mobiledocHtmlRenderer.render(JSON.parse(post.mobiledoc), {target: 'email'});
// perform any email specific adjustments to the mobiledoc->HTML render output
let _cheerio = cheerio.load(post.html);
// remove leading/trailing HRs
_cheerio(':root > hr:first-child, :root > div:first-child > hr:first-child').remove();
_cheerio(':root > hr:last-child, :root > div:last-child > hr:last-child').remove();
post.html = _cheerio.html();
post.plaintext = htmlToPlaintext(post.html); post.plaintext = htmlToPlaintext(post.html);
// Outlook will render feature images at full-size breaking the layout. // Outlook will render feature images at full-size breaking the layout.
@ -268,7 +276,7 @@ const serialize = async (postModel, options = {isBrowserPreview: false, apiVersi
// convert juiced HTML to a DOM-like interface for further manipulation // convert juiced HTML to a DOM-like interface for further manipulation
// happens after inlining of CSS so we can change element types without worrying about styling // happens after inlining of CSS so we can change element types without worrying about styling
let _cheerio = cheerio.load(juicedHtml); _cheerio = cheerio.load(juicedHtml);
// force all links to open in new tab // force all links to open in new tab
_cheerio('a').attr('target','_blank'); _cheerio('a').attr('target','_blank');
// convert figure and figcaption to div so that Outlook applies margins // convert figure and figcaption to div so that Outlook applies margins