SitemapBuilder

SitemapBuilder is a rail plugin for sitemap generation. It is heavily based on Adam Salter’s Sitemap Generator plugin (git://github.com/adamsalter/sitemap_generator.git).

This plugin is not a fork of Adam’s plugin but a complete rewriting since the goal and the way to build sitemap is different.

Indeed, I wanted a way to build seveal sitemap for the same website depending on some paramters such as the site language (see file sitemap_example.rb).

Installation

no gem for now.

script/plugin install git://github.com/franck/sitemap_builder.git

Usage

Create a sitemap.rb file in config/

Create a sitemap instance:

sitemap = SitemapBuilder::Sitemap.new(
  :debug => true,
  :host => "http://localhost:3000",
  :filename => "sitemap.yml",
  :ping_search_engines => true
)

sitemap.add root_path
sitemap.add pages_path
Page.all.each do |page|
  sitemap.add page_path(page)
end
sitemap.add url_for(:controller => "articles", :action => "index", :only_path => true)

Then add the following lines for the sitemap generation and ping search engines (if set to true):

sitemap.generate
sitemap.ping_search_engines

Then, fire the rake task :

rake sitemapbuilder:create

I use whenever gem (git://github.com/javan/whenever.git) to schedule a new sitemap creation :

every 1.week do
  rake "sitemapbuilder:create"
end

A complete example file is available inside the plugin root directory : sitemap_example.rb

Sitemap index

A sitemap index builder is also provided. Example of config/sitemap.rb:

sitemap_index = SitemapBuilder::SitemapIndex.new() sitemap = SitemapBuilder::Sitemap.new() sitemap.add root_path sitemap_index.sitemaps << sitemap sitemap_index.generate

These lines create a sitemap.xml file and a sitemap_index.xml file in the public directory.

Options

SitemapBuilder::Sitemap accepts several options :

  • debug: generate sitemap files, verbose, does not ping search engines even if set to true (default: false)

  • host: base url of your website. don’t forget the http:// (default: “localhost:3000”)

  • filename: sitemap name (default: “sitemap.xml”)

  • sitemap_folder: indicate a folder where the sitemap is located (default: “”, example: “sitemaps”)

  • ping_search_engines: ping google, yahoo, bing and ask.com (default: false)

TODO

  • test coverage

  • handling lot of links and sitemap indexes

Copyright © 2009 Franck D’agostini, released under the MIT license