Hoy os voy a comentar el procedimiento que sigo para crear el archivo sitemap.xml para una app con ruby on rails, en realidad es un proceso bastante sencillo y, una vez hecho, se irá actualizando automáticamente una vez lo tengamos creado cada vez que se cree una página nueva, al menos en la mayoría de las partes.
Bien, debemos seguir tres pasos principales, la creación de la ruta que llevará al archivo sitemap.xml, la creación del controlador y la creación de la vista. Vamos a ir paso a paso para que el procedimiento quede totalmente claro.
1. Creación de la ruta de acceso a sitemap.xml
En primer lugar, como de costumbre, vamos a modificar el archivo routes.rb para poder acceder a la url en la que estará el archivo sitemap.xml, para ello, vamos a poner la siguiente línea de código dentro del archivo:
# config/routes.rb get 'sitemap.xml', :to => 'sitemap#index', :defaults => {:format => 'xml'}
Con esta línea ya hemos creado la ruta mediante a la que acceder al sitemap.
2. Creación del controlador
Ahora que ya tenemos la ruta, tenemos que crear el controlador, como siempre, recordad que estamos aplicando en Rails el modelo – vista – controlador (si no sabes que demonios es esto, en este artículo intento explicarlo, espero haberlo conseguido)
# app/controllers/sitemap_controller.rb class SitemapController < ApplicationController layout nil def index headers['Content-Type'] = 'application/xml' respond_to do |format| format.xml {@products = Product.all} end end end
En este caso, suponemos que estamos creando un sitemap para una tienda online, de hecho, queremos que, cada vez que se acceda a la url del sitemap estén incluidos todos los productos en nuestra base de datos.
Ya tenemos el controlador, vamos a por la vista
3. Generación de la vista de sitemap.xml en nuestra app
Para la vista, tan solo tendremos que crear el archivo index.xml.haml dentro de app/views/sitemap/ Yo suelo usar haml, si vosotros soléis trabajar con ficheros .html.erb, tan solo tendréis que añadir los cierres correspondientes y demás, yo trabajo indistintamente con ambos, otro día os hablaré de haml, esta abstracción de html me encanta, aunque en algunas situaciones no os lo recomiendo, yo para algunas cosas utilizo los archivos .erb pero bueno, eso mejor os lo cuento otro día, que nos vamos del tema.
# app/views/sitemap/index.xml.haml !!! XML %urlset{:xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9"} %url %loc http://miapp.com %changefreq hourly %priority 1.0 - if @products - for product in @products %url %loc http://miapp.com#{product_path(product)} %lastmod=product.updated_at.strftime('%Y-%m-%d') %changefreq monthly %priority 0.5
Si os fijáis, hay un pequeño detalle, he añadido una url fija al sitemap, la raíz, normalmente vais a querer añadir unas cuantas aquí al sitemap, la página de sobre nosotros, por ejemplo, la página de tienda, etc… esto ya es una decisión que debéis tomar cada uno de vosotros dependiendo de las necesidades concretas de la web.
Por lo demás, una vez hayas hecho el deploy de los cambios, con dirigirte a «http://miapp.com/sitemap.xml» deberás ver en tu navegador el xml con las url que has incluido en este archivo.
Espero haberte ayudado a generar tu sitemap.xml, si tienes alguna duda, deja un comentario, estaré encantado de verlos y contestar. Igual, si tienes algún truco o mejora, me encantará que me lo digas.
Deja una respuesta