diff --git a/subcategory/README.md b/subcategory/README.md index fdd5c47..f9a3f24 100644 --- a/subcategory/README.md +++ b/subcategory/README.md @@ -7,6 +7,9 @@ regular category or another subcategory. Subcategories with the same name but different parents are not the same. Their articles won't be grouped together under that name. +Feeds can be generated for each subcategory just like categories and tags. + + ##Usage## Subcategories are an extension to categories. Add subcategories to an article's @@ -49,3 +52,13 @@ url would be: category-slug/sub-category-slug/sub-sub-category-slug with `savepath` being similar but joined using `os.path.join` + +Similarily you can save a subcategory feeds by adding one of the following +to your pelicanconf file + + SUBCATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' + SUBCATEGORY_FEED_RSS = 'feeds/%s.rss.xml' + +and this will create a feed with `fullurl` of the subcategory. Eg. + + feeds/category/subcategory.atom.xml diff --git a/subcategory/subcategory.py b/subcategory/subcategory.py index 680d7f4..be37b81 100644 --- a/subcategory/subcategory.py +++ b/subcategory/subcategory.py @@ -63,15 +63,31 @@ def generate_subcategories(generator, writer): write = partial(writer.write_file, relative_urls=generator.settings['RELATIVE_URLS']) subcategory_template = generator.get_template('subcategory') - for sub_cat, articles in generator.subcategories.items(): + for subcat, articles in generator.subcategories.items(): articles.sort(key=attrgetter('date'), reverse=True) dates = [article for article in generator.dates if article in articles] - write(sub_cat.save_as, subcategory_template, generator.context, - subcategory=sub_cat, articles=articles, dates=dates, + write(subcat.save_as, subcategory_template, generator.context, + subcategory=subcat, articles=articles, dates=dates, paginated={'articles': articles, 'dates': dates}, - page_name=sub_cat.page_name, all_articles=generator.articles) + page_name=subcat.page_name, all_articles=generator.articles) + +def generate_subcategory_feeds(generator, writer): + for subcat, articles in generator.subcategories.items(): + articles.sort(key=attrgetter('date'), reverse=True) + if generator.settings.get('SUBCATEGORY_FEED_ATOM'): + writer.write_feed(articles, generator.context, + generator.settings['SUBCATEGORY_FEED_ATOM'] + % subcat.fullurl) + if generator.settings.get('SUBCATEGORY_FEED_RSS'): + writer.write_feed(articles, generator.context, + generator.settings['SUBCATEGORY_FEED_RSS'] + % subcat.fullurl, feed_type='rss') + +def generate(generator, writer): + generate_subcategory_feeds(generator, writer) + generate_subcategories(generator, writer) def register(): signals.article_generator_context.connect(get_subcategories) signals.article_generator_finalized.connect(organize_subcategories) - signals.article_writer_finalized.connect(generate_subcategories) + signals.article_writer_finalized.connect(generate)