/ / Wie finde ich Portlets, die auf einer bestimmten Seite in Liferay hinzugefügt wurden? - Liferay, Liferay-6, Portlet

Wie finden Sie Portlets, die auf einer bestimmten Seite in Liferay hinzugefügt wurden? - liveray, liveray-6, Portlet

Wie finde ich heraus, welche Portlets auf einer bestimmten Liferay-Seite hinzugefügt wurden?

Beispielsweise:
Ich habe drei Seiten: Herzlich willkommen, Wiki und Suche.

Auf all diesen Seiten wurden jetzt Portlets hinzugefügt, und einige von ihnen sind instanziierbare Portlets (z. B. Webinhaltsanzeige- und Iframe-Portlets).

Nun möchte ich einige Informationen in Form von Anforderungsparametern an die übermitteln iframe-portlet auf der Search page von dem Welcome page.

Antworten:

20 für die Antwort № 1

Ich habe zwei Möglichkeiten gefunden, dies zu tun:

  1. Wenn Sie die Portlets auf derselben Seite finden möchten, auf der Ihr Portlet hinzugefügt wurde, können Sie sie verwenden themeDisplay Objekt, das für Ihr Portlet oder Ihre JSP verfügbar ist:

    // 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 einer anderen Seite suchen möchten, sollten Sie drei Dinge wissen, nämlich: friendly-url, groupId und ob diese Seite a public-page oder private-page der Site (oder Community), hier also 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();
    

Das portletIdList enthält die portletIds mit ihren instanceIds. Nun können Sie aus der Liste das herausfiltern iframe-portlet auf der /search Seite mit com.liferay.portal.util.PortletKeys.IFRAME und du wirst sowas bekommen 48_INSTANCE_rPv9.