2011-01-27 35 views
18

में किसी पृष्ठ का यूआरएल प्राप्त करें, मैं एक पोर्टलेट में एक लिंक बनाना चाहता हूं ताकि मैं जीवनभर पोर्टल में किसी भिन्न पृष्ठ पर जा सकूं। मैं ऐसा करने का आदेश देता हूं कि मैं एक एपीआई ढूंढ रहा हूं (जीवनभर विशिष्ट हो सकता है) जिसने पृष्ठ का नाम दिया है, यह यूआरएल वापस कर देगा (यह दोस्ताना भी हो सकता है)।प्रोग्रामेटिक रूप से लाइफरे

उत्तर

8

Liferay में पृष्ठों तक पहुंचने के लिए API लेआउट सेवा है। हालांकि, लिफाफे में पेज नाम अद्वितीय नहीं हैं और इसके अलावा वे अंतर्राष्ट्रीयकृत हैं। इसलिए आपको इसके नाम के अलावा, अपने यूआरएल को पुनः प्राप्त करने के लिए किसी पृष्ठ के लिए कुछ अनूठी संपत्ति की आवश्यकता है।

यदि आपके पास वास्तव में केवल पृष्ठ का नाम है, तो आप सभी लेआउट पर लूप के लिए लेआउटLocalServiceUtil.getLayouts (...) का उपयोग कर सकते हैं और कुछ संपत्ति (इस मामले में इसका नाम) जांच सकते हैं।

+0

नाम अद्वितीय नहीं हैं, लेकिन FriendlyURL संपत्ति अद्वितीय है। – Jonny

+2

FriendlyURL अद्वितीय AFAIK नहीं है। विभिन्न समूहों में दो पेज (लेआउट) के पास एक ही दोस्ताना यूआरएल हो सकता है। दरअसल वे करेंगे, क्योंकि जब आप नया समूह बनाते हैं तो आप आमतौर पर "/ home" दोस्ताना यूआरएल के साथ पृष्ठ बनाते हैं। बात यह है कि किसी पृष्ठ (लेआउट) के अनुकूल यूआरएल में पूरा पथ नहीं है (जैसे "/ वेब/अतिथि/घर", "/ वेब/उपयोगकर्ता/घर") लेकिन केवल इसका एक हिस्सा। – mvmn

+4

समूह आईडी + अनुकूलURL का संयोजन अद्वितीय है हालांकि। –

12

लिफ़ेरे में पोर्टल पेजों को वास्तव में एपीआई और डीबी टेबल में Layouts कहा जाता है। उन्हें plid फ़ील्ड द्वारा पहचाना जाता है, LayoutLocalServiceUtil और संबंधित API का उपयोग करके और themeDisplay.getLayout() जैसी कुछ अन्य कॉलों से भी प्राप्त किया जा सकता है।

हालांकि आदेश में एक पृष्ठ के लिए स्ट्रिंग युक्त यूआरएल के निर्माण के लिए आप पोर्टल, समूह और खुद लेआउट के अनुकूल यूआरएल को श्रेणीबद्ध करना होगा (यानी /web/guest/home - web सार्वजनिक पृष्ठों के लिए पोर्टल यूआरएल है, guest द्वारा अतिथि समूह के अनुकूल यूआरएल है डिफ़ॉल्ट और home डिफ़ॉल्ट रूप से होम पेज/लेआउट का अनुकूल यूआरएल है)। यह मुश्किल हो सकता है, क्योंकि आपको यह जांचना है कि यह एक सार्वजनिक या निजी पृष्ठ है, आदि

और एक बार जब आप समूहों के लिए अनुकूल यूआरएल के साथ वर्चुअल होस्ट का उपयोग शुरू करते हैं, तो चीजें बदलती हैं। तो यह एक अच्छा तरीका नहीं है।

मैन्युअल रूप से यूआरएल बनाने से बचने के लिए और यूआरएल जो सही होने की गारंटी है, आपको com.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)PortalUtil की एक स्थिर विधि का उपयोग करना चाहिए - यह आपके लिए आवश्यक सभी काम करेगा। हालांकि आपको ThemeDisplay और न केवल लेआउट प्रदान करने की आवश्यकता है।

1

कम से कम लिफ़ेरे 6.1.20 में कोई भी लिंक आपके पोर्टल में एंटोर पेज पर लिंक बनाने के लिए 'लिंक पोर्टलेट यूआरएल पृष्ठ' का उपयोग कर सकता है। यह आपके पोर्टल के 'दिखने और महसूस' मेनू आइटम के अंतर्गत है। मेरे लिए यह ठीक काम करता है।

चीयर्स

संबंधित मुद्दे