2010-09-01 18 views
5

Aquí está el desafío: dependiendo de la URL entrante, quiero mostrar una página de aterrizaje específica y, al iniciar sesión, una experiencia de usuario específica basada en la identidad del usuario.Grails-brandable application

Por ejemplo, tanto www.abc.com como www.xyz.com apuntan a una sola instancia de Grails que proporciona una experiencia de portal común. Si el usuario llegó a través de www.abc.com, quiero mostrar la página de bienvenida de ABC con el formulario de inicio de sesión. Si el usuario llegó a través de www.xyz.com, quiero mostrar la página de presentación de XYZ con el formulario de inicio de sesión.

Una vez que el usuario inicie sesión, tendré que mantener el contexto original de "marca" como lo determina la URL entrante. Por ejemplo, incluso a través de todos los GSP, los controladores, etc. son compartidos por todos los usuarios, los usuarios de ABC recogerán su propio CSS, paquetes de recursos (o entradas), etc. y el usuario tendrá una experiencia visual muy diferente a la de los usuarios de XYZ. .

¿Esto es posible? ¿O necesito ramificar la base de código de la aplicación y alojar múltiples instancias de portal independientes?

Respuesta

7

http://www.grails.org/Views+and+Layouts

a echar un vistazo, creo que puede resolver el 90% de sus problemas. Tener un diseño específico para cada dominio. Los diseños están cargados para cada vista y pueden ayudar a definir la apariencia

puede puede establecer variable en un filtro, basado en la URL, lo que podría ser leído en el diseño http://www.grails.org/Filters

class MyFilters { 
    def filters = { 
     myFilter(controller:'*', action:'*') { 
      after = { 
       if (request.requestURI == "xyz") { 
       session.layout = "layout1.gsp" 
       } else { 
       session.layout = "layout2.gsp" 
       } 
      } 
     } 
    } 
} 
+0

Gracias Aaron. Estaba planeando usar diseños, pero lo que no he descubierto es (a) cómo tener páginas de inicio iniciales basadas en la URL entrante, y (b) cómo establecer una variable de contexto basada en la URL entrante para que pueda programar determinar qué diseño usar en cada página. (Estaba pensando que tendría que hacer algo como esto: ) – ecodan

+0

actualicé el código para mostrar el enfoque alternativo con el filtro –

+0

Aaron- tu comentario despertó un poco de pensamiento creativo en este sentido, y pudimos resolver el problema usando filtros (como sugirió), taglibs e i18n. ¡Gracias! – ecodan