2012-08-06 11 views
14

Jak mogę znaleźć, które portlety są dodawane na danej stronie Liferay?Jak znaleźć portlety dodane na określonej stronie w Liferay?

Dla przykładu:
Mam trzy strony: Witaj, Wiki i wyszukiwania.

Teraz wszystkie te strony mają dodane portlety, a niektóre z nich to portlety do umieszczenia (np. Portlety treści WWW i portlety iframe).

Teraz chcę przekazać niektóre informacje w postaci parametrów żądania do iframe-portlet na Search page z Welcome page.

Odpowiedz

20

Znalazłem dwa sposoby, aby to zrobić:

  1. Jeśli chcesz znaleźć portletów na tej samej stronie, w którym twój portlet jest dodawany następnie, można skorzystać z themeDisplay obiektu dostępny do portletu lub 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. Jeśli chcesz znaleźć portletów na jakiejś innej stronie, to należy wiedzieć trzy rzeczy, a mianowicie; friendly-url, groupId i czy ta strona jest public-page lub private-page z witryny (lub Wspólnoty), więc tutaj jest kod:

    // 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(); 
    

The portletIdList zawiera portletIds kompletne z ich instanceIds. Teraz z listy możesz odfiltrować stronę iframe-portlet na stronie /search za pomocą com.liferay.portal.util.PortletKeys.IFRAME, a otrzymasz coś w rodzaju 48_INSTANCE_rPv9.

Powiązane problemy