XML карта сайта в Grails - PullRequest
       3

XML карта сайта в Grails

7 голосов
/ 20 сентября 2010

Я пытаюсь найти наилучший способ создания карты сайта XML (как описано здесь: http://www.sitemaps.org/) для приложения Grails. Мне неизвестны какие-либо существующие плагины, которые делают это, поэтому я мог бы создать их. Тем не менее, я хотел сначала получить информацию от сообщества. Помимо поддержки стандартных контроллеров / действий, я думаю, что было бы неплохо также поддерживать приложения, управляемые контентом, где URL может быть сгенерирован, например, на основе свойства title.

Как бы вы, ребята, пошли по этому поводу? Что бы вы рассмотрели и как бы это реализовать?

Спасибо!

Ответы [ 2 ]

16 голосов
/ 20 сентября 2010

Файлы Sitemap довольно специфичны для каждого приложения, поэтому я не уверен, достаточно ли общего кода для извлечения из плагина.

Вот как мы генерируем карту сайта для http://www.shareyourlove.com. КакВы можете видеть, что он довольно минимальный и СУХОЙ благодаря хорошему синтаксису XML Groovy / Grails

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 Mappings

class UrlMappings {
    static mappings = {

        "/sitemap"{
            controller = 'sitemap'
            action = 'sitemap'
        }
    }
}
0 голосов
/ 16 октября 2018

Я делал карту сайта на Grails с UrlMappings.groovy и мне не нужен контроллер для этой практики.Я поместил следующий код в UrlMappings:

"/robots.txt" (view: "/robots")
"/sitemap.xml" (view: "/sitemap")

И я создаю свою карту сайта как gsp с кодировкой XML, пример sitemap.gsp:

<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <url>

      <loc>http://www.putYourSite.com.py/</loc>

      <lastmod>putAdate</lastmod>

      <changefreq>daily</changefreq>

      <priority>1.0</priority>

   </url>

</urlset>
...