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
|
different parents are not the same. Their articles won't be grouped together
|
||||||
under that name.
|
under that name.
|
||||||
|
|
||||||
|
Feeds can be generated for each subcategory just like categories and tags.
|
||||||
|
|
||||||
|
|
||||||
##Usage##
|
##Usage##
|
||||||
|
|
||||||
Subcategories are an extension to categories. Add subcategories to an article's
|
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
|
category-slug/sub-category-slug/sub-sub-category-slug
|
||||||
|
|
||||||
with `savepath` being similar but joined using `os.path.join`
|
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,
|
write = partial(writer.write_file,
|
||||||
relative_urls=generator.settings['RELATIVE_URLS'])
|
relative_urls=generator.settings['RELATIVE_URLS'])
|
||||||
subcategory_template = generator.get_template('subcategory')
|
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)
|
articles.sort(key=attrgetter('date'), reverse=True)
|
||||||
dates = [article for article in generator.dates if article in articles]
|
dates = [article for article in generator.dates if article in articles]
|
||||||
write(sub_cat.save_as, subcategory_template, generator.context,
|
write(subcat.save_as, subcategory_template, generator.context,
|
||||||
subcategory=sub_cat, articles=articles, dates=dates,
|
subcategory=subcat, articles=articles, dates=dates,
|
||||||
paginated={'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():
|
def register():
|
||||||
signals.article_generator_context.connect(get_subcategories)
|
signals.article_generator_context.connect(get_subcategories)
|
||||||
signals.article_generator_finalized.connect(organize_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