diff --git a/core/server/controllers/frontend.js b/core/server/controllers/frontend.js
index 6edd35b070..e8d5c62942 100644
--- a/core/server/controllers/frontend.js
+++ b/core/server/controllers/frontend.js
@@ -505,7 +505,8 @@ frontendControllers = {
site_url: siteUrl,
ttl: '60',
custom_namespaces: {
- content: 'http://purl.org/rss/1.0/modules/content/'
+ content: 'http://purl.org/rss/1.0/modules/content/',
+ media: 'http://search.yahoo.com/mrss/'
}
});
@@ -525,14 +526,11 @@ frontendControllers = {
url: config.urlFor('post', {post: post, permalinks: permalinks}, true),
date: post.published_at,
categories: _.pluck(post.tags, 'name'),
- author: post.author ? post.author.name : null
+ author: post.author ? post.author.name : null,
+ custom_elements: []
},
- htmlContent = cheerio.load(post.html, {decodeEntities: false});
-
- if (post.image) {
- htmlContent('p').first().before('');
- htmlContent('img').attr('alt', post.title);
- }
+ htmlContent = cheerio.load(post.html, {decodeEntities: false}),
+ image;
// convert relative resource urls to absolute
['href', 'src'].forEach(function (attributeName) {
@@ -577,13 +575,31 @@ frontendControllers = {
});
});
- item.custom_elements = [{
+ item.description = post.meta_description || downsize(htmlContent.html(), {words: 50});
+
+ if (post.image) {
+ image = config.urlFor('image', {image: post.image}, true);
+
+ // Add a media content tag
+ item.custom_elements.push({
+ 'media:content': {
+ _attr: {
+ url: image,
+ medium: 'image'
+ }
+ }
+ });
+
+ // Also add the image to the content, because not all readers support media:content
+ htmlContent('p').first().before('
');
+ htmlContent('img').attr('alt', post.title);
+ }
+
+ item.custom_elements.push({
'content:encoded': {
_cdata: htmlContent.html()
}
- }];
-
- item.description = post.meta_description || downsize(htmlContent.html(), {words: 50});
+ });
feed.item(item);
});
diff --git a/core/test/functional/routes/frontend_test.js b/core/test/functional/routes/frontend_test.js
index dedd9aedb2..1188407985 100644
--- a/core/test/functional/routes/frontend_test.js
+++ b/core/test/functional/routes/frontend_test.js
@@ -443,7 +443,14 @@ describe('Frontend Routing', function () {
}).catch(done);
});
- it('should use meta_description where available', function (done) {
+ it('should use meta_description and image where available', function (done) {
+ var post1End = 'you think :)
mctesters
\n\n