2010-03-01 19 views
6

Il metodo standard di creazione di URL in Grails è:Grails URL SEO friendly

<a href="${createLink(controller:'news', action: 'show', params: [id: news.id])}">${news.title}</a> 

che genera l'url: /news/show/102

voglio di più URL SEO friendly come:

/news/102/this-is-the-hottest-news-today 

Cosa è il modo più pulito per farlo in Grails? Potrei usare graal URLMapping per mappare /news/show/102 a /news/102, ma come faccio a creare l'URL completo come sopra?

risposta

15

Si potrebbe trasformare il titolo in un parametro come questo:

name story: "/news/$id/$headline" { 
    controller = "news" 
    action = "show" 
} 

In questo modo è possibile creare gli URL con il titolo in loro e la mappatura sarebbe ancora lavorare. Ovviamente non è necessario utilizzare il parametro del titolo che verrà visualizzato nel controller. L'esempio precedente utilizza una mappatura URL di nome in modo da poter poi dire:

${createLink(mapping: "story", params: [id: 102, headline: 'this-is-the-hottest-news-today'])} 

Forse potresti essere interessato a questo plug-in per la creazione di URL canonici - http://www.grails.org/plugin/canonical

+0

+1. L'argomento "mappatura" era quello di cui avevo bisogno. Grazie. – Langali

+0

Dave, grazie! Questo metodo è molto utile per siti multilingue, in cui è possibile indirizzare un determinato mapper in base alle impostazioni locali correnti. Nel mio esempio ho mappature story-en e story-hr e nel mio g: link uso mapping: "story - $ {locale}" che seleziona il mapper appropriato per le impostazioni locali selezionate. –

Problemi correlati