aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMikkel Hoegh <mikkel@hoegh.org>2011-10-05 00:24:13 +0200
committerMikkel Hoegh <mikkel@hoegh.org>2011-10-05 00:27:17 +0200
commit66916f57a71b3d7aeb1465b049ed701fbf65a68c (patch)
tree60de0a3912cc0634a8d3a89a6dd03b9a2686548f /plugins
parent8c2532e5bfa3a519bd14711c84f0a6d8ffbbd628 (diff)
downloadmy_new_personal_website-66916f57a71b3d7aeb1465b049ed701fbf65a68c.tar.xz
my_new_personal_website-66916f57a71b3d7aeb1465b049ed701fbf65a68c.zip
First attempt at creating per-category Atom feeds.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/category_generator.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/plugins/category_generator.rb b/plugins/category_generator.rb
index d9357bc8..bb5fd329 100644
--- a/plugins/category_generator.rb
+++ b/plugins/category_generator.rb
@@ -48,6 +48,35 @@ module Jekyll
end
+ # The CategoryFeed class creates an Atom feed for the specified category.
+ class CategoryFeed < Page
+
+ # Initializes a new CategoryFeed.
+ #
+ # +base+ is the String path to the <source>.
+ # +category_dir+ is the String path between <source> and the category folder.
+ # +category+ is the category currently being processed.
+ def initialize(site, base, category_dir, category)
+ @site = site
+ @base = base
+ @dir = category_dir
+ @name = 'atom.xml'
+ self.process(@name)
+ # Read the YAML data from the layout page.
+ self.read_yaml(File.join(base, '_includes/custom'), 'category_feed.xml')
+ self.data['category'] = category
+ # Set the title for this page.
+ title_prefix = site.config['category_title_prefix'] || 'Category: '
+ self.data['title'] = "#{title_prefix}#{category}"
+ # Set the meta-description for this page.
+ meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: '
+ self.data['description'] = "#{meta_description_prefix}#{category}"
+
+ # Set the correct feed URL.
+ self.data['feed_url'] = "#{category_dir}/#{name}"
+ end
+
+ end
# The Site class is a built-in Jekyll class with access to global site config information.
class Site
@@ -63,6 +92,13 @@ module Jekyll
index.write(self.dest)
# Record the fact that this page has been added, otherwise Site::cleanup will remove it.
self.pages << index
+
+ # Create an Atom-feed for each index.
+ feed = CategoryFeed.new(self, self.source, category_dir, category)
+ feed.render(self.layouts, site_payload)
+ feed.write(self.dest)
+ # Record the fact that this page has been added, otherwise Site::cleanup will remove it.
+ self.pages << feed
end
# Loops through the list of category pages and processes each one.