diff --git a/pelican/generators.py b/pelican/generators.py index b877d43a..57ed121a 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -267,24 +267,26 @@ class ArticlesGenerator(CachingGenerator): if self.settings.get('CATEGORY_FEED_ATOM'): writer.write_feed(arts, self.context, self.settings['CATEGORY_FEED_ATOM'] - % cat.slug) + % cat.slug, feed_title=cat.name) if self.settings.get('CATEGORY_FEED_RSS'): writer.write_feed(arts, self.context, 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: arts.sort(key=attrgetter('date'), reverse=True) if self.settings.get('AUTHOR_FEED_ATOM'): writer.write_feed(arts, self.context, self.settings['AUTHOR_FEED_ATOM'] - % auth.slug) + % auth.slug, feed_title=auth.name) if self.settings.get('AUTHOR_FEED_RSS'): writer.write_feed(arts, self.context, 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 self.settings.get('TAG_FEED_RSS')): @@ -293,12 +295,12 @@ class ArticlesGenerator(CachingGenerator): if self.settings.get('TAG_FEED_ATOM'): writer.write_feed(arts, self.context, self.settings['TAG_FEED_ATOM'] - % tag.slug) + % tag.slug, feed_title=tag.name) if self.settings.get('TAG_FEED_RSS'): writer.write_feed(arts, self.context, 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 self.settings.get('TRANSLATION_FEED_RSS')): diff --git a/pelican/writers.py b/pelican/writers.py index 17f7d483..51ad63eb 100644 --- a/pelican/writers.py +++ b/pelican/writers.py @@ -30,11 +30,14 @@ class Writer(object): self._written_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 - sitename = Markup(context['SITENAME']).striptags() + if feed_title: + feed_title = context['SITENAME'] + ' - ' + feed_title + else: + feed_title = context['SITENAME'] feed = feed_class( - title=sitename, + title=Markup(feed_title).striptags(), link=(self.site_url + '/'), feed_url=self.feed_url, description=context.get('SITESUBTITLE', '')) @@ -80,7 +83,8 @@ 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, path=None, feed_type='atom', + feed_title=None): """Generate a feed with the list of articles provided Return the feed. If no path or output_path is specified, just @@ -90,6 +94,7 @@ class Writer(object): :param context: the context to get the feed metadata. :param path: the path to output. :param feed_type: the feed type to use (atom or rss) + :param feed_title: the title of the feed. """ if not is_selected_for_writing(self.settings, path): return @@ -102,7 +107,7 @@ class Writer(object): self.feed_domain = context.get('FEED_DOMAIN') 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) if self.settings['FEED_MAX_ITEMS']: