2010-09-01 27 views
5

Đây là thách thức: tùy thuộc vào URL đến mà tôi muốn hiển thị một trang đích cụ thể và khi đăng nhập, một trải nghiệm người dùng cụ thể dựa trên danh tính của người dùng.Ứng dụng Grails- brandable

Ví dụ: cả www.abc.com và www.xyz.com trỏ đến một cá thể Grails duy nhất cung cấp trải nghiệm cổng chung. Nếu người dùng đến qua www.abc.com, tôi muốn hiển thị trang splash của ABC với biểu mẫu đăng nhập. Nếu người dùng đến qua www.xyz.com, tôi muốn hiển thị trang splash XYZ với biểu mẫu đăng nhập.

Khi người dùng đăng nhập, tôi sẽ cần giữ ngữ cảnh "thương hiệu" ban đầu như được xác định bởi URL đến. Ví dụ, thậm chí thông qua tất cả GSP, bộ điều khiển, vv được chia sẻ bởi tất cả người dùng, người dùng ABC sẽ nhận CSS, gói tài nguyên (hoặc mục nhập) của riêng họ, v.v. và người dùng sẽ có trải nghiệm hình ảnh rất khác so với người dùng XYZ .

Điều này có khả thi không? Hoặc tôi có cần phải phân nhánh codebase của ứng dụng và lưu trữ nhiều cá thể cổng thông tin độc lập không?

Trả lời

7

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

hãy xem, tôi nghĩ rằng nó có thể giải quyết 90% vấn đề của bạn. Có bố cục cụ thể cho từng tên miền. Sơ đồ bố trí được nạp cho từng xem và có thể hỗ trợ trong việc xác định giao diện

bạn có thể có thể thiết lập biến trong một bộ lọc, dựa trên URL, sau đó có thể được đọc trong bố trí 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

Cảm ơn Aaron. Tôi đã lên kế hoạch sử dụng bố cục, nhưng điều tôi chưa biết là (a) cách có trang đích ban đầu dựa trên URL đến và (b) cách đặt biến ngữ cảnh dựa trên URL đến để tôi có thể lập trình xác định bố cục để sử dụng trên mỗi trang. (Tôi đã suy nghĩ tôi sẽ phải làm một cái gì đó như thế này: ) – ecodan

+0

cập nhật mã để hiển thị phương pháp thay thế bằng bộ lọc –

+0

Aaron- nhận xét của bạn đã tạo ra một số suy nghĩ sáng tạo về vấn đề này và chúng tôi có thể giải quyết vấn đề bằng cách sử dụng các bộ lọc (như bạn đã đề xuất), thẻ taglib và i18n. Cảm ơn! – ecodan

Các vấn đề liên quan