2012-08-06 16 views
14

Wie kann ich herausfinden, welche Portlets auf einer bestimmten Liferay-Seite hinzugefügt wurden?Wie finden Sie Portlets, die auf einer bestimmten Seite in Liferay hinzugefügt wurden?

Beispiel:
Ich habe drei Seiten: Willkommen, Wiki und Suche.

Jetzt sind auf allen diesen Seiten Portlets hinzugefügt und einige davon sind instanziierbare Portlets (wie Web-Content-Anzeige und Iframe-Portlets).

Jetzt möchte ich einige Informationen in Form von Anfrage-Parameter an die iframe-portlet über die Search page von der Welcome page übergeben.

Antwort

20

ich zwei Möglichkeiten, dies zu tun gefunden haben:

  1. Wenn Sie die Portlets auf der gleichen Seite finden möchten, in dem das Portlet dann hinzugefügt haben, können Sie die Verwendung von themeDisplay Objekt zur Verfügung zu Ihrem Portlet machen oder JSP:

    // In JSP 
    List<String> portletIdList = themeDisplay.getLayoutTypePortlet().getPortletIds(); 
    
    // In portlet class 
    ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY); 
    List<String> portletIdList = themeDisplay.getLayoutTypePortlet().getPortletIds(); 
    
  2. Wenn Sie die Portlets auf einigen anderen Seite zu finden, dann sollten Sie drei Dinge, nämlich wissen; friendly-url, groupId und ob diese Seite ein public-page oder private-page der Website (oder Gemeinschaft), ist so hier der Code:

    // 101543 is the SiteId, if it is a public-page then "false" and "/search" is the friendlyURL 
    LayoutTypePortlet layoutTypePortlet = LayoutTypePortletFactoryUtil.create(LayoutLocalServiceUtil.getFriendlyURLLayout(101543, false, "/search")); 
    List<String> portletIdList = layoutTypePortlet.getPortletIds(); 
    

Die portletIdList enthält die portletIds komplett mit ihrem instanceIds. Also jetzt aus der Liste können Sie nur die iframe-portlet auf der /search Seite mit com.liferay.portal.util.PortletKeys.IFRAME herausfiltern und Sie werden etwas wie 48_INSTANCE_rPv9 bekommen.

Verwandte Themen