diff --git a/docs/settings.rst b/docs/settings.rst index e51c6a1207..9163a7dbc0 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -1000,8 +1000,8 @@ the ``TAG_FEED_ATOM`` and ``TAG_FEED_RSS`` settings: .. data:: FEED_MAX_ITEMS - Maximum number of items allowed in a feed. Feed item quantity is - unrestricted by default. + Maximum number of items allowed in a feed. `False` for unrestricted. 100 if + not specified. .. data:: RSS_FEED_SUMMARY_ONLY = True diff --git a/pelican/writers.py b/pelican/writers.py index 73ee4b3331..e70402f965 100644 --- a/pelican/writers.py +++ b/pelican/writers.py @@ -143,11 +143,15 @@ def write_feed(self, elements, context, path=None, url=None, feed = self._create_new_feed(feed_type, feed_title, context) - max_items = len(elements) 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]) + last_item = self.settings['FEED_MAX_ITEMS'] + elif isinstance(self.settings['FEED_MAX_ITEMS'], bool): + # explicitly set FEED_MAX_ITEMS = False + last_item = len(elements) + else: + last_item = 100 + for element in elements[:last_item]: + self._add_item_to_the_feed(feed, element) signals.feed_generated.send(context, feed=feed) if path: