Dica rápida para quem está precisando criar um arquivo sitemap.xml, aquele mesmo que auxilia os navegadores a indexar melhor as páginas de um site.
Levando em consideração, neste exemplo, que temos um root_controller.rb, criaremos um método sitemap nele.
def sitemap @urls = [ ["1.0", "http://www.domain.com/", "daily"], ["0.5", "http://www.domain.com/about", "monthly"], ["0.5", "http://www.domain.com/contact", "monthly"], ] @objects = Object.find( :all, :order => "updated_at DESC", :limit => 50000) response.headers['Content-Type'] = 'application/xml' render :action => 'sitemap', :layout => false end
Como podemos observar, foi criado um hash com as URLs que são estáticas (podem até ter conteúdo dinâmico, mas são URLs que nunca mudarão). Definimos no hash alguns parâmetros como a importância e a frequência que as páginas são atualizadas. Em seguida, recebemos de uma consulta ao banco, objetos que formarão as URLs dinâmicas do site. Definimos também que a resposta da requisição está no formato XML e que aquele determinado método não é renderizado pelo template padrão.
No arquivo de rotas (routes.rb), criaremos uma rota para o método sitemap. Veja abaixo:
map.sitemap "/sitemap.xml", :controller => "root", :action => "sitemap"
Agora precisamos criar o template do XML que vai renderizar os parâmetros do método:
xml.instruct! :xml xml.urlset "xmlns" => "http://www.sitemaps.org/schemas/sitemap/0.9" do @urls.each do |url| xml.tag! 'url' do xml.tag! 'loc', url[1] xml.tag! 'changefreq', url[2] xml.tag! 'priority', url[0] end end @objects.each do |o| xml.tag! 'url' do xml.tag! 'loc', object_url(o) xml.tag! 'changefreq', 'monthly' xml.tag! 'priority', '0.2' end end end
Este arquivo, sendo salvo como sitemap.rxml, será responsável por formatar o documento XML. Podemos observar que o primeiro bloco de código é responsável pelas urls estáticas, e a segunda parte faz um loop do objeto que recuperamos do banco de dados.
Agora você já tem um um sitemap.xml para utilizar nas ferramentas de webmasters dos mecanismos de busca.





