Skip to content

Instantly share code, notes, and snippets.

@waiting-for-dev
Created February 6, 2014 15:12
Show Gist options
  • Save waiting-for-dev/8846035 to your computer and use it in GitHub Desktop.
Save waiting-for-dev/8846035 to your computer and use it in GitHub Desktop.
sitemap builder for refinerycms with blog support
xml.instruct!
xml.urlset "xmlns" => "http://www.sitemaps.org/schemas/sitemap/0.9" do
@locales.each do |locale|
::I18n.locale = locale
::Refinery::Page.live.in_menu.includes(:parts).each do |page|
# exclude sites that are external to our own domain.
page_url = if page.url.is_a?(Hash)
# This is how most pages work without being overriden by link_url
page.url.merge({:only_path => false})
elsif page.url.to_s !~ /^http/
# handle relative link_url addresses.
[request.protocol, request.host_with_port, page.url].join
end
# Add XML entry only if there is a valid page_url found above.
xml.url do
xml.loc url_for(page_url)
xml.lastmod page.updated_at.to_date
xml.priority '0.5'
end if page_url.present? and page.show_in_menu?
end
# Here starts refinerycms-blog stuff
# posts index
last_post = ::Refinery::Blog::Post.recent(1).first
xml.url do
xml.loc refinery.blog_root_url
xml.lastmod(last_post.updated_at.to_date) unless last_post.nil?
xml.priority '1'
end
# posts
::Refinery::Blog::Post.where(draft: false).each do |post|
post_url = refinery.blog_post_url(post)
xml.url do
xml.loc post_url
xml.lastmod post.updated_at.to_date
xml.priority '1'
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment