Created
February 6, 2014 15:12
-
-
Save waiting-for-dev/8846035 to your computer and use it in GitHub Desktop.
sitemap builder for refinerycms with blog support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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