mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Enables the template engine also for feeds
This commit is contained in:
parent
f62198aeab
commit
2f70cdb338
3 changed files with 21 additions and 17 deletions
|
|
@ -280,12 +280,13 @@ class ArticlesGenerator(CachingGenerator):
|
|||
def generate_feeds(self, writer):
|
||||
"""Generate the feeds from the current context, and output files."""
|
||||
|
||||
template = self.get_template('feed_item')
|
||||
if self.settings.get('FEED_ATOM'):
|
||||
writer.write_feed(self.articles, self.context,
|
||||
writer.write_feed(self.articles, self.context, template,
|
||||
self.settings['FEED_ATOM'])
|
||||
|
||||
if self.settings.get('FEED_RSS'):
|
||||
writer.write_feed(self.articles, self.context,
|
||||
writer.write_feed(self.articles, self.context, template,
|
||||
self.settings['FEED_RSS'], feed_type='rss')
|
||||
|
||||
if (self.settings.get('FEED_ALL_ATOM') or
|
||||
|
|
@ -296,35 +297,35 @@ class ArticlesGenerator(CachingGenerator):
|
|||
all_articles.sort(key=attrgetter('date'), reverse=True)
|
||||
|
||||
if self.settings.get('FEED_ALL_ATOM'):
|
||||
writer.write_feed(all_articles, self.context,
|
||||
writer.write_feed(all_articles, self.context, template,
|
||||
self.settings['FEED_ALL_ATOM'])
|
||||
|
||||
if self.settings.get('FEED_ALL_RSS'):
|
||||
writer.write_feed(all_articles, self.context,
|
||||
writer.write_feed(all_articles, self.context, template,
|
||||
self.settings['FEED_ALL_RSS'],
|
||||
feed_type='rss')
|
||||
|
||||
for cat, arts in self.categories:
|
||||
arts.sort(key=attrgetter('date'), reverse=True)
|
||||
if self.settings.get('CATEGORY_FEED_ATOM'):
|
||||
writer.write_feed(arts, self.context,
|
||||
writer.write_feed(arts, self.context, template,
|
||||
self.settings['CATEGORY_FEED_ATOM']
|
||||
% cat.slug)
|
||||
|
||||
if self.settings.get('CATEGORY_FEED_RSS'):
|
||||
writer.write_feed(arts, self.context,
|
||||
writer.write_feed(arts, self.context, template,
|
||||
self.settings['CATEGORY_FEED_RSS']
|
||||
% cat.slug, feed_type='rss')
|
||||
|
||||
for auth, arts in self.authors:
|
||||
arts.sort(key=attrgetter('date'), reverse=True)
|
||||
if self.settings.get('AUTHOR_FEED_ATOM'):
|
||||
writer.write_feed(arts, self.context,
|
||||
writer.write_feed(arts, self.context, template,
|
||||
self.settings['AUTHOR_FEED_ATOM']
|
||||
% auth.slug)
|
||||
|
||||
if self.settings.get('AUTHOR_FEED_RSS'):
|
||||
writer.write_feed(arts, self.context,
|
||||
writer.write_feed(arts, self.context, template,
|
||||
self.settings['AUTHOR_FEED_RSS']
|
||||
% auth.slug, feed_type='rss')
|
||||
|
||||
|
|
@ -333,12 +334,12 @@ class ArticlesGenerator(CachingGenerator):
|
|||
for tag, arts in self.tags.items():
|
||||
arts.sort(key=attrgetter('date'), reverse=True)
|
||||
if self.settings.get('TAG_FEED_ATOM'):
|
||||
writer.write_feed(arts, self.context,
|
||||
writer.write_feed(arts, self.context, template,
|
||||
self.settings['TAG_FEED_ATOM']
|
||||
% tag.slug)
|
||||
|
||||
if self.settings.get('TAG_FEED_RSS'):
|
||||
writer.write_feed(arts, self.context,
|
||||
writer.write_feed(arts, self.context, template,
|
||||
self.settings['TAG_FEED_RSS'] % tag.slug,
|
||||
feed_type='rss')
|
||||
|
||||
|
|
@ -352,11 +353,11 @@ class ArticlesGenerator(CachingGenerator):
|
|||
items.sort(key=attrgetter('date'), reverse=True)
|
||||
if self.settings.get('TRANSLATION_FEED_ATOM'):
|
||||
writer.write_feed(
|
||||
items, self.context,
|
||||
items, self.context, template,
|
||||
self.settings['TRANSLATION_FEED_ATOM'] % lang)
|
||||
if self.settings.get('TRANSLATION_FEED_RSS'):
|
||||
writer.write_feed(
|
||||
items, self.context,
|
||||
items, self.context, template,
|
||||
self.settings['TRANSLATION_FEED_RSS'] % lang,
|
||||
feed_type='rss')
|
||||
|
||||
|
|
|
|||
1
pelican/themes/simple/templates/feed_item.html
Normal file
1
pelican/themes/simple/templates/feed_item.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
{{ feed_item.content }}
|
||||
|
|
@ -41,8 +41,10 @@ class Writer(object):
|
|||
description=context.get('SITESUBTITLE', ''))
|
||||
return feed
|
||||
|
||||
def _add_item_to_the_feed(self, feed, item):
|
||||
|
||||
def _add_item_to_the_feed(self, feed, item, template, context):
|
||||
localcontext = context.copy()
|
||||
localcontext.update({'feed_item' : item})
|
||||
output = template.render(localcontext)
|
||||
title = Markup(item.title).striptags()
|
||||
link = '%s/%s' % (self.site_url, item.url)
|
||||
feed.add_item(
|
||||
|
|
@ -51,7 +53,7 @@ class Writer(object):
|
|||
unique_id='tag:%s,%s:%s' % (urlparse(link).netloc,
|
||||
item.date.date(),
|
||||
urlparse(link).path.lstrip('/')),
|
||||
description=item.get_content(self.site_url),
|
||||
description=output,
|
||||
categories=item.tags if hasattr(item, 'tags') else None,
|
||||
author_name=getattr(item, 'author', ''),
|
||||
pubdate=set_date_tzinfo(
|
||||
|
|
@ -81,7 +83,7 @@ class Writer(object):
|
|||
self._written_files.add(filename)
|
||||
return open(filename, 'w', encoding=encoding)
|
||||
|
||||
def write_feed(self, elements, context, path=None, feed_type='atom',
|
||||
def write_feed(self, elements, context, template, path=None, feed_type='atom',
|
||||
override_output=False):
|
||||
"""Generate a feed with the list of articles provided
|
||||
|
||||
|
|
@ -111,7 +113,7 @@ class Writer(object):
|
|||
if self.settings['FEED_MAX_ITEMS']:
|
||||
max_items = min(self.settings['FEED_MAX_ITEMS'], max_items)
|
||||
for i in range(max_items):
|
||||
self._add_item_to_the_feed(feed, elements[i])
|
||||
self._add_item_to_the_feed(feed, elements[i], template, context)
|
||||
|
||||
if path:
|
||||
complete_path = os.path.join(self.output_path, path)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue