diff options
author | Mikkel Hoegh <mikkel@hoegh.org> | 2011-10-05 00:24:13 +0200 |
---|---|---|
committer | Mikkel Hoegh <mikkel@hoegh.org> | 2011-10-05 00:27:17 +0200 |
commit | 66916f57a71b3d7aeb1465b049ed701fbf65a68c (patch) | |
tree | 60de0a3912cc0634a8d3a89a6dd03b9a2686548f /plugins | |
parent | 8c2532e5bfa3a519bd14711c84f0a6d8ffbbd628 (diff) | |
download | my_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.rb | 36 |
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. |