我试图找出为Grails应用程序生成
XML站点地图的最佳方法(如此处所述:
http://www.sitemaps.org/).我不知道有任何现有的插件,所以我可能会建立一个.但是,我想先得到社区的意见.除了支持标准控制器/操作之外,我认为支持内容驱动的应用程序也很好,例如,可以基于title属性生成URL.
你们怎么会这样做?您会考虑什么以及如何实施它?
谢谢!
站点地图非常特定于每个应用程序,因此我不确定是否有足够的公共代码可以提取到插件.
以下是我们为http://www.shareyourlove.com生成站点地图的方法.正如您所看到的,由于Groovy / Grails的优秀XML语法,它非常简单和干燥
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) } } } }
URL映射
class UrlMappings { static mappings = { "/sitemap"{ controller = 'sitemap' action = 'sitemap' } } }