2011-12-06 3 views
5

के माध्यम से नेस्टेड पोर्टल (liferay) जोड़ने के लिए कैसे हमारे पास liferay में नेस्टेड पोर्टल कहा जाता है। मैं कोड के माध्यम से गतिशील रूप से इस पोर्टल को जोड़ना चाहता हूं। क्या कोई नेस्टेड पोर्टल जोड़ने के लिए कोड जानता है, और इसके अंदर अन्य पोर्टल जोड़ता है?कोड

धन्यवाद !!!

उत्तर

5

पूर्ण उदाहरण के लिए मैं मानता हूं कि आप किसी अन्य पोर्टलेट एक्शन हैंडलर का उपयोग करके वर्तमान पृष्ठ पर नेस्टेड पोर्टलेट जोड़ना चाहते हैं। (यदि कार्रवाई प्रस्तुत करना से इस्तेमाल किया आप पृष्ठ के अगले दृश्य जब तक नेस्टेड portlet नहीं देख पा रहे हैं)

अपने कोड

private static String addPortlet(final long p_userId, final Layout p_layout, final String p_portletId, final String p_columnId, final int p_position, final boolean p_checkPermission) 
       throws PortalException, SystemException 
{ 
    if (p_layout.isTypePortlet()) { 
     final LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) p_layout.getLayoutType(); 

     final String portletId = layoutTypePortlet.addPortletId(p_userId, p_portletId, p_columnId, p_position, p_checkPermission); 
     if (portletId != null) { 
      final String rootPortletId = PortletConstants.getRootPortletId(portletId); 
      final String portletPrimaryKey = PortletPermissionUtil.getPrimaryKey(p_layout.getPlid(), portletId); 
      ResourceLocalServiceUtil.addResources(p_layout.getCompanyId(), p_layout.getGroupId(), 0, rootPortletId, portletPrimaryKey, true, true, true); 
      LayoutLocalServiceUtil.updateLayout(p_layout.getGroupId(), p_layout.isPrivateLayout(), p_layout.getLayoutId(), p_layout.getTypeSettings()); 
     } 
     return portletId; 
    } 

    return null; 
} 

private static void addNestedPortlet(final PortletRequest p_request) throws PortalException, SystemException { 
    final ThemeDisplay themeDisplay = (ThemeDisplay) p_request.getAttribute(WebKeys.THEME_DISPLAY); 
    final Layout layout = themeDisplay.getLayout(); 
    long userId = themeDisplay.getUserId(); 

    //create nested portlet and add it to "column-1" 
    final String nestedPortletId = addPortlet(userId, layout, "118", "column-1", -1, false); 

    //this will be used to target nested portlet's columns 
    final String nestedColumnPrefix = "_" + nestedPortletId + "__"; 

    //default page layout (used by nested portlet) has two columns 
    //we'll add two portlets (in this example two iframe portlets), one portlet to each column 
    addPortlet(userId, layout, "48", nestedColumnPrefix + "column-1", -1, false); 
    addPortlet(userId, layout, "48", nestedColumnPrefix + "column-2", -1, false); 
} 


इन तरीकों जोड़े आप चाहते हैं, तो और शायद आप को जोड़ने के लिए होगा नेस्टेड पोर्टलेट किसी अन्य पृष्ठ पर या पोर्टलेट से नहीं, आप थीमडिस्प्ले से उन्हें प्राप्त करने के बजाय लेआउट और उपयोगकर्ता को देख सकते हैं।