added support for generating subcategory feeds
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user