में किसी पृष्ठ का यूआरएल प्राप्त करें, मैं एक पोर्टलेट में एक लिंक बनाना चाहता हूं ताकि मैं जीवनभर पोर्टल में किसी भिन्न पृष्ठ पर जा सकूं। मैं ऐसा करने का आदेश देता हूं कि मैं एक एपीआई ढूंढ रहा हूं (जीवनभर विशिष्ट हो सकता है) जिसने पृष्ठ का नाम दिया है, यह यूआरएल वापस कर देगा (यह दोस्ताना भी हो सकता है)।प्रोग्रामेटिक रूप से लाइफरे
उत्तर
Liferay में पृष्ठों तक पहुंचने के लिए API लेआउट सेवा है। हालांकि, लिफाफे में पेज नाम अद्वितीय नहीं हैं और इसके अलावा वे अंतर्राष्ट्रीयकृत हैं। इसलिए आपको इसके नाम के अलावा, अपने यूआरएल को पुनः प्राप्त करने के लिए किसी पृष्ठ के लिए कुछ अनूठी संपत्ति की आवश्यकता है।
यदि आपके पास वास्तव में केवल पृष्ठ का नाम है, तो आप सभी लेआउट पर लूप के लिए लेआउटLocalServiceUtil.getLayouts (...) का उपयोग कर सकते हैं और कुछ संपत्ति (इस मामले में इसका नाम) जांच सकते हैं।
लिफ़ेरे में पोर्टल पेजों को वास्तव में एपीआई और डीबी टेबल में Layouts
कहा जाता है। उन्हें plid
फ़ील्ड द्वारा पहचाना जाता है, LayoutLocalServiceUtil
और संबंधित API का उपयोग करके और themeDisplay.getLayout()
जैसी कुछ अन्य कॉलों से भी प्राप्त किया जा सकता है।
हालांकि आदेश में एक पृष्ठ के लिए स्ट्रिंग युक्त यूआरएल के निर्माण के लिए आप पोर्टल, समूह और खुद लेआउट के अनुकूल यूआरएल को श्रेणीबद्ध करना होगा (यानी /web/guest/home
- web
सार्वजनिक पृष्ठों के लिए पोर्टल यूआरएल है, guest
द्वारा अतिथि समूह के अनुकूल यूआरएल है डिफ़ॉल्ट और home
डिफ़ॉल्ट रूप से होम पेज/लेआउट का अनुकूल यूआरएल है)। यह मुश्किल हो सकता है, क्योंकि आपको यह जांचना है कि यह एक सार्वजनिक या निजी पृष्ठ है, आदि
और एक बार जब आप समूहों के लिए अनुकूल यूआरएल के साथ वर्चुअल होस्ट का उपयोग शुरू करते हैं, तो चीजें बदलती हैं। तो यह एक अच्छा तरीका नहीं है।
मैन्युअल रूप से यूआरएल बनाने से बचने के लिए और यूआरएल जो सही होने की गारंटी है, आपको com.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)
PortalUtil
की एक स्थिर विधि का उपयोग करना चाहिए - यह आपके लिए आवश्यक सभी काम करेगा। हालांकि आपको ThemeDisplay
और न केवल लेआउट प्रदान करने की आवश्यकता है।
कम से कम लिफ़ेरे 6.1.20 में कोई भी लिंक आपके पोर्टल में एंटोर पेज पर लिंक बनाने के लिए 'लिंक पोर्टलेट यूआरएल पृष्ठ' का उपयोग कर सकता है। यह आपके पोर्टल के 'दिखने और महसूस' मेनू आइटम के अंतर्गत है। मेरे लिए यह ठीक काम करता है।
चीयर्स
- 1. लाइफरे
- 2. प्रोग्रामेटिक रूप से
- 3. एंड्रॉइड प्रोग्रामेटिक रूप से
- 4. आईफोन प्रोग्रामेटिक रूप से
- 5. सिल्वरलाइट प्रोग्रामेटिक रूप से
- 6. ओएसएक्स प्रोग्रामेटिक रूप से
- 7. डेटाटेबल प्रोग्रामेटिक रूप से
- 8. एंड्रॉइड प्रोग्रामेटिक रूप से
- 9. जीमेल प्रोग्रामेटिक रूप से
- 10. QTreeView प्रोग्रामेटिक रूप से
- 11. R.String प्रोग्रामेटिक रूप से
- 12. प्रोग्रामेटिक रूप से मेनिफेस्ट
- 13. app.config प्रोग्रामेटिक रूप से
- 14. जेटी प्रोग्रामेटिक रूप से
- 15. uitableview प्रोग्रामेटिक रूप से
- 16. प्रोग्रामेटिक रूप से
- 17. प्रोग्रामेटिक रूप से ListItem
- 18. जेएसपी प्रोग्रामेटिक रूप से
- 19. प्रोग्रामेटिक रूप से सीआईएल
- 20. प्रोग्रामेटिक रूप से VB.NET
- 21. प्रोग्रामेटिक रूप से एंड्रॉइड
- 22. प्रोग्रामेटिक रूप से JTable
- 23. प्रोग्रामेटिक रूप से R.id
- 24. UIWebView प्रोग्रामेटिक रूप से
- 25. GridView प्रोग्रामेटिक रूप से
- 26. प्रोग्रामेटिक रूप से
- 27. प्रोग्रामेटिक रूप से .NET
- 28. एनयूनीट प्रोग्रामेटिक रूप से
- 29. प्रोग्रामेटिक रूप से .NET
- 30. प्रोग्रामेटिक रूप से सिम्बियन
नाम अद्वितीय नहीं हैं, लेकिन FriendlyURL संपत्ति अद्वितीय है। – Jonny
FriendlyURL अद्वितीय AFAIK नहीं है। विभिन्न समूहों में दो पेज (लेआउट) के पास एक ही दोस्ताना यूआरएल हो सकता है। दरअसल वे करेंगे, क्योंकि जब आप नया समूह बनाते हैं तो आप आमतौर पर "/ home" दोस्ताना यूआरएल के साथ पृष्ठ बनाते हैं। बात यह है कि किसी पृष्ठ (लेआउट) के अनुकूल यूआरएल में पूरा पथ नहीं है (जैसे "/ वेब/अतिथि/घर", "/ वेब/उपयोगकर्ता/घर") लेकिन केवल इसका एक हिस्सा। – mvmn
समूह आईडी + अनुकूलURL का संयोजन अद्वितीय है हालांकि। –