Class: Middleman::Blog::AliasPages

Inherits:
Object
  • Object
show all
Includes:
UriTemplates
Defined in:
lib/middleman-blog/alias_pages.rb

Overview

A sitemap resource manipulator that adds alias/redirect pages to the sitemap for each blog article based on the configured alias patterns

Instance Method Summary collapse

Methods included from UriTemplates

apply_uri_template, date_to_params, extract_directory_path, extract_params, safe_parameterize, uri_template

Constructor Details

#initialize(app, blog_controller) ⇒ AliasPages

Initialise Alias pages

Parameters:

  • app (Object)

    Middleman app

  • blog_controller (Object)

    Blog controller



22
23
24
25
26
27
28
# File 'lib/middleman-blog/alias_pages.rb', line 22

def initialize(app, blog_controller)
  @sitemap         = app.sitemap
  @blog_controller = blog_controller
  @blog_data       = blog_controller.data
  @alias_patterns  = blog_controller.options.aliases || []
  @alias_templates = @alias_patterns.map { |pattern| uri_template(pattern) }
end

Instance Method Details

#manipulate_resource_list(resources) ⇒ Array

Update the main sitemap resource list

Parameters:

  • resources (Array)

    Existing resources

Returns:

  • (Array)

    Resources with alias pages added



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/middleman-blog/alias_pages.rb', line 36

def manipulate_resource_list(resources)
  return resources if @alias_patterns.empty?

  alias_resources = []

  @blog_data.articles.each do |article|
    @alias_templates.each do |template|
      alias_path = generate_alias_path(template, article)
      next if alias_path == article.destination_path # Don't create alias to itself

      alias_resources << alias_page_resource(alias_path, article)
    end
  end

  resources + alias_resources
end