2010-09-01 8 views
5

यहां चुनौती है: आने वाले यूआरएल के आधार पर मैं एक विशिष्ट लैंडिंग पृष्ठ और लॉगिन पर, उपयोगकर्ता की पहचान के आधार पर एक विशिष्ट उपयोगकर्ता अनुभव प्रदर्शित करना चाहता हूं।Grails- ब्रांडेबल एप्लिकेशन

उदाहरण के लिए, www.abc.com और www.xyz.com दोनों एक एकल Grails उदाहरण को इंगित करते हैं जो एक सामान्य पोर्टल अनुभव प्रदान करता है। यदि उपयोगकर्ता www.abc.com के माध्यम से पहुंचा, तो मैं लॉगिन फॉर्म के साथ एबीसी स्पलैश पेज प्रदर्शित करना चाहता हूं। यदि उपयोगकर्ता www.xyz.com के माध्यम से पहुंचा, तो मैं एक्सवाईजेड स्प्लैश पेज को लॉगिन फॉर्म के साथ प्रदर्शित करना चाहता हूं।

उपयोगकर्ता लॉग इन करने के बाद, मुझे आने वाले यूआरएल द्वारा निर्धारित मूल "ब्रांड" संदर्भ रखना होगा। उदाहरण के लिए, सभी जीएसपी, कंट्रोलर इत्यादि के माध्यम से भी सभी उपयोगकर्ताओं द्वारा साझा किया जाता है, एबीसी उपयोगकर्ता अपना स्वयं का सीएसएस, संसाधन बंडल (या प्रविष्टियां) इत्यादि उठाएंगे और उपयोगकर्ता के पास XYZ उपयोगकर्ताओं की तुलना में एक बहुत अलग दृश्य अनुभव होगा ।

क्या यह संभव है? या क्या मुझे एप्लिकेशन कोडबेस को ब्रांच करने और एकाधिक स्वतंत्र पोर्टल उदाहरण होस्ट करने की आवश्यकता है?

उत्तर

7

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

एक बार देख ले, मुझे लगता है कि अपनी समस्याओं का 90% का समाधान कर सकते हैं। प्रत्येक डोमेन के लिए एक विशिष्ट लेआउट है। लेआउट प्रत्येक दृश्य के लिए लोड किए गए हैं और देखो को परिभाषित करने में सहायता करने और

आप URL है, जो तब लेआउट 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

में पढ़ा जा सकता है के आधार पर एक फिल्टर में चर सेट कर सकते हैं कर सकते हैं, महसूस कर सकते हैं धन्यवाद हारून। मैं लेआउट का उपयोग करने की योजना बना रहा था, लेकिन जो मैंने नहीं पाया है (ए) आने वाले यूआरएल के आधार पर प्रारंभिक लैंडिंग पेज कैसे प्राप्त करें, और (बी) इनकमिंग यूआरएल के आधार पर एक संदर्भ चर कैसे सेट करें ताकि मैं प्रोग्रामेटिक रूप से कर सकूं निर्धारित करें कि प्रत्येक पृष्ठ पर कौन सा लेआउट उपयोग करना है। (मैं थोड़ी सोच रहा था कि मुझे ऐसा कुछ करना होगा: <मेटा नाम = "लेआउट" सामग्री = "" />) – ecodan

+0

फ़िल्टर –

+0

हारून के साथ वैकल्पिक दृष्टिकोण दिखाने के लिए कोड अपडेट किया गया- आपकी टिप्पणी इस अंत में कुछ रचनात्मक सोच फैल गई, और हम फ़िल्टर का उपयोग करके समस्या को हल करने में सक्षम थे (जैसा कि आपने सुझाव दिया था), टैगलिब्स, और i18n। धन्यवाद! – ecodan