2010-09-20 7 views
7

estoy tratando de averiguar la mejor manera de generar un mapa del sitio XML (como se describe aquí: http://www.sitemaps.org/) para una aplicación Grails. No conozco ningún complemento existente que haga esto, así que podría compilar uno. Sin embargo, quería obtener la opinión de la comunidad primero. Además de admitir controladores/acciones estándar, creo que sería bueno admitir aplicaciones controladas por contenido, así como la URL que podría generarse en función de una propiedad de título, por ejemplo.XML en Grails

¿Cómo ustedes ir sobre esto? ¿Qué considerarías y cómo lo implementarías?

Gracias!

Respuesta

16

Los sitemaps son bastante específicos para cada aplicación, por lo que no estoy seguro de si hay suficiente código común para un plugin.

Así es como generamos nuestro mapa del sitio para http://www.shareyourlove.com. Como se puede ver que es bastante escaso y seco debido a la sintaxis XML agradable Groovy/Grails de

class SitemapController{ 

     def sitemap = { 
      render(contentType: 'text/xml', encoding: 'UTF-8') { 
       mkp.yieldUnescaped '<?xml version="1.0" encoding="UTF-8"?>' 
       urlset(xmlns: "http://www.sitemaps.org/schemas/sitemap/0.9", 
         'xmlns:xsi': "http://www.w3.org/2001/XMLSchema-instance", 
         'xsi:schemaLocation': "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd") { 
        url { 
         loc(g.createLink(absolute: true, controller: 'home', action: 'view')) 
         changefreq('hourly') 
         priority(1.0) 
        } 
        //more static pages here 
        ... 
        //add some dynamic entries 
        SomeDomain.list().each {domain-> 
        url { 
         loc(g.createLink(absolute: true, controller: 'some', action: 'view', id: domain.id)) 
         changefreq('hourly') 
         priority(0.8) 
        } 
       } 
      } 
    } 

asignaciones de URL

class UrlMappings { 
    static mappings = { 

     "/sitemap"{ 
      controller = 'sitemap' 
      action = 'sitemap' 
     } 
    } 
} 
+0

Ah, por lo que estamos construyendo que sobre la marcha? – RyanLynch

+0

Sí, debido a las secciones dinámicas y al hecho de que no se golpea mucho, así que no nos molestamos en implementar el almacenamiento en caché (pero eso no sería difícil de hacer). – leebutts

+0

¿Puedes mostrar las asignaciones de URL para este controlador? –