mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Fix #1291: Feeds have ambiguous titles on sites with multiple categories.
This commit is contained in:
parent
9cff2efb62
commit
3b6d059eac
2 changed files with 17 additions and 11 deletions
|
|
@ -309,24 +309,26 @@ class ArticlesGenerator(CachingGenerator):
|
||||||
if self.settings.get('CATEGORY_FEED_ATOM'):
|
if self.settings.get('CATEGORY_FEED_ATOM'):
|
||||||
writer.write_feed(arts, self.context,
|
writer.write_feed(arts, self.context,
|
||||||
self.settings['CATEGORY_FEED_ATOM']
|
self.settings['CATEGORY_FEED_ATOM']
|
||||||
% cat.slug)
|
% cat.slug, feed_title=cat.name)
|
||||||
|
|
||||||
if self.settings.get('CATEGORY_FEED_RSS'):
|
if self.settings.get('CATEGORY_FEED_RSS'):
|
||||||
writer.write_feed(arts, self.context,
|
writer.write_feed(arts, self.context,
|
||||||
self.settings['CATEGORY_FEED_RSS']
|
self.settings['CATEGORY_FEED_RSS']
|
||||||
% cat.slug, feed_type='rss')
|
% cat.slug, feed_title=cat.name,
|
||||||
|
feed_type='rss')
|
||||||
|
|
||||||
for auth, arts in self.authors:
|
for auth, arts in self.authors:
|
||||||
arts.sort(key=attrgetter('date'), reverse=True)
|
arts.sort(key=attrgetter('date'), reverse=True)
|
||||||
if self.settings.get('AUTHOR_FEED_ATOM'):
|
if self.settings.get('AUTHOR_FEED_ATOM'):
|
||||||
writer.write_feed(arts, self.context,
|
writer.write_feed(arts, self.context,
|
||||||
self.settings['AUTHOR_FEED_ATOM']
|
self.settings['AUTHOR_FEED_ATOM']
|
||||||
% auth.slug)
|
% auth.slug, feed_title=auth.name)
|
||||||
|
|
||||||
if self.settings.get('AUTHOR_FEED_RSS'):
|
if self.settings.get('AUTHOR_FEED_RSS'):
|
||||||
writer.write_feed(arts, self.context,
|
writer.write_feed(arts, self.context,
|
||||||
self.settings['AUTHOR_FEED_RSS']
|
self.settings['AUTHOR_FEED_RSS']
|
||||||
% auth.slug, feed_type='rss')
|
% auth.slug, feed_title=auth.name,
|
||||||
|
feed_type='rss')
|
||||||
|
|
||||||
if (self.settings.get('TAG_FEED_ATOM') or
|
if (self.settings.get('TAG_FEED_ATOM') or
|
||||||
self.settings.get('TAG_FEED_RSS')):
|
self.settings.get('TAG_FEED_RSS')):
|
||||||
|
|
@ -335,12 +337,12 @@ class ArticlesGenerator(CachingGenerator):
|
||||||
if self.settings.get('TAG_FEED_ATOM'):
|
if self.settings.get('TAG_FEED_ATOM'):
|
||||||
writer.write_feed(arts, self.context,
|
writer.write_feed(arts, self.context,
|
||||||
self.settings['TAG_FEED_ATOM']
|
self.settings['TAG_FEED_ATOM']
|
||||||
% tag.slug)
|
% tag.slug, feed_title=tag.name)
|
||||||
|
|
||||||
if self.settings.get('TAG_FEED_RSS'):
|
if self.settings.get('TAG_FEED_RSS'):
|
||||||
writer.write_feed(arts, self.context,
|
writer.write_feed(arts, self.context,
|
||||||
self.settings['TAG_FEED_RSS'] % tag.slug,
|
self.settings['TAG_FEED_RSS'] % tag.slug,
|
||||||
feed_type='rss')
|
feed_title=tag.name, feed_type='rss')
|
||||||
|
|
||||||
if (self.settings.get('TRANSLATION_FEED_ATOM') or
|
if (self.settings.get('TRANSLATION_FEED_ATOM') or
|
||||||
self.settings.get('TRANSLATION_FEED_RSS')):
|
self.settings.get('TRANSLATION_FEED_RSS')):
|
||||||
|
|
|
||||||
|
|
@ -31,11 +31,14 @@ class Writer(object):
|
||||||
self._written_files = set()
|
self._written_files = set()
|
||||||
self._overridden_files = set()
|
self._overridden_files = set()
|
||||||
|
|
||||||
def _create_new_feed(self, feed_type, context):
|
def _create_new_feed(self, feed_type, feed_title, context):
|
||||||
feed_class = Rss201rev2Feed if feed_type == 'rss' else Atom1Feed
|
feed_class = Rss201rev2Feed if feed_type == 'rss' else Atom1Feed
|
||||||
sitename = Markup(context['SITENAME']).striptags()
|
if feed_title:
|
||||||
|
feed_title = context['SITENAME'] + ' - ' + feed_title
|
||||||
|
else:
|
||||||
|
feed_title = context['SITENAME']
|
||||||
feed = feed_class(
|
feed = feed_class(
|
||||||
title=sitename,
|
title=Markup(feed_title).striptags(),
|
||||||
link=(self.site_url + '/'),
|
link=(self.site_url + '/'),
|
||||||
feed_url=self.feed_url,
|
feed_url=self.feed_url,
|
||||||
description=context.get('SITESUBTITLE', ''))
|
description=context.get('SITESUBTITLE', ''))
|
||||||
|
|
@ -84,7 +87,7 @@ class Writer(object):
|
||||||
return open(filename, 'w', encoding=encoding)
|
return open(filename, 'w', encoding=encoding)
|
||||||
|
|
||||||
def write_feed(self, elements, context, path=None, feed_type='atom',
|
def write_feed(self, elements, context, path=None, feed_type='atom',
|
||||||
override_output=False):
|
override_output=False, feed_title=None):
|
||||||
"""Generate a feed with the list of articles provided
|
"""Generate a feed with the list of articles provided
|
||||||
|
|
||||||
Return the feed. If no path or output_path is specified, just
|
Return the feed. If no path or output_path is specified, just
|
||||||
|
|
@ -97,6 +100,7 @@ class Writer(object):
|
||||||
:param override_output: boolean telling if we can override previous
|
:param override_output: boolean telling if we can override previous
|
||||||
output with the same name (and if next files written with the same
|
output with the same name (and if next files written with the same
|
||||||
name should be skipped to keep that one)
|
name should be skipped to keep that one)
|
||||||
|
:param feed_title: the title of the feed.o
|
||||||
"""
|
"""
|
||||||
if not is_selected_for_writing(self.settings, path):
|
if not is_selected_for_writing(self.settings, path):
|
||||||
return
|
return
|
||||||
|
|
@ -107,7 +111,7 @@ class Writer(object):
|
||||||
self.feed_domain = context.get('FEED_DOMAIN')
|
self.feed_domain = context.get('FEED_DOMAIN')
|
||||||
self.feed_url = '{}/{}'.format(self.feed_domain, path)
|
self.feed_url = '{}/{}'.format(self.feed_domain, path)
|
||||||
|
|
||||||
feed = self._create_new_feed(feed_type, context)
|
feed = self._create_new_feed(feed_type, feed_title, context)
|
||||||
|
|
||||||
max_items = len(elements)
|
max_items = len(elements)
|
||||||
if self.settings['FEED_MAX_ITEMS']:
|
if self.settings['FEED_MAX_ITEMS']:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue