class Middleman::Blog::CalendarPages
A sitemap plugin that adds month/day/year pages to the sitemap based on the dates of blog articles.
Public Class Methods
new(app, blog_controller)
click to toggle source
# File lib/middleman-blog/calendar_pages.rb, line 10 def initialize(app, blog_controller) @sitemap = app.sitemap @blog_controller = blog_controller @blog_data = blog_controller.data blog_options = blog_controller.options @day_link_template = uri_template blog_options.day_link @month_link_template = uri_template blog_options.month_link @year_link_template = uri_template blog_options.year_link @day_template = blog_options.day_template @month_template = blog_options.month_template @year_template = blog_options.year_template @generate_year_pages = blog_options.generate_year_pages @generate_month_pages = blog_options.generate_month_pages @generate_day_pages = blog_options.generate_day_pages end
Public Instance Methods
link(year, month = nil, day = nil)
click to toggle source
Get a path to the given calendar page, based on the :year_link, :month_link or :day_link setting. @param [Number] year @param [Number] month @param [Number] day @return [String]
# File lib/middleman-blog/calendar_pages.rb, line 32 def link(year, month = nil, day = nil) template = if day @day_link_template elsif month @month_link_template else @year_link_template end apply_uri_template template, date_to_params(Date.new(year, month || 1, day || 1)) end
manipulate_resource_list(resources)
click to toggle source
Update the main sitemap resource list @return [Array<Middleman::Sitemap::Resource>]
# File lib/middleman-blog/calendar_pages.rb, line 46 def manipulate_resource_list(resources) new_resources = [] # Set up date pages if the appropriate templates have been specified @blog_data.articles.group_by { |a| a.date.year }.each do |year, year_articles| new_resources << year_page_resource(year, year_articles) if @generate_year_pages && @year_template year_articles.group_by { |a| a.date.month }.each do |month, month_articles| new_resources << month_page_resource(year, month, month_articles) if @generate_month_pages && @month_template month_articles.group_by { |a| a.date.day }.each do |day, day_articles| new_resources << day_page_resource(year, month, day, day_articles) if @generate_day_pages && @day_template end end end resources + new_resources end
Private Instance Methods
day_page_resource(year, month, day, day_articles)
click to toggle source
# File lib/middleman-blog/calendar_pages.rb, line 92 def day_page_resource(year, month, day, day_articles) Sitemap::ProxyResource.new(@sitemap, link(year, month, day), @day_template).tap do |p| p.add_metadata locals: { 'page_type' => 'day', 'year' => year, 'month' => month, 'day' => day, 'articles' => day_articles, 'blog_controller' => @blog_controller } end end
month_page_resource(year, month, month_articles)
click to toggle source
# File lib/middleman-blog/calendar_pages.rb, line 80 def month_page_resource(year, month, month_articles) Sitemap::ProxyResource.new(@sitemap, link(year, month), @month_template).tap do |p| p.add_metadata locals: { 'page_type' => 'month', 'year' => year, 'month' => month, 'articles' => month_articles, 'blog_controller' => @blog_controller } end end
year_page_resource(year, year_articles)
click to toggle source
# File lib/middleman-blog/calendar_pages.rb, line 67 def year_page_resource(year, year_articles) Sitemap::ProxyResource.new(@sitemap, link(year), @year_template).tap do |p| # Add metadata in local variables so it's accessible to # later extensions p.add_metadata locals: { 'page_type' => 'year', 'year' => year, 'articles' => year_articles, 'blog_controller' => @blog_controller } end end