/ / Jak znaleźć portlety dodane na określonej stronie w Liferay? - liferay, liferay-6, portlet

Jak znaleźć portlety dodane na określonej stronie w Liferay? - liferay, liferay-6, portlet

Jak znaleźć portlety dodane na określonej stronie Liferay?

Na przykład:
Mam trzy strony: Witamy, Wiki i Szukaj.

Teraz wszystkie te strony mają dodane portlety, a niektóre z nich są portletami instacyjnymi (np. Portlety do wyświetlania treści WWW i iframe).

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

Odpowiedzi:

20 dla odpowiedzi nr 1

Znalazłem dwa sposoby, aby to zrobić:

  1. Jeśli chcesz znaleźć portlety na tej samej stronie, na której dodano portlet, możesz skorzystać z themeDisplay obiekt dostępny dla twojego portletu lub strony 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źć portlety na innej stronie, powinieneś wiedzieć trzy rzeczy: friendly-url, groupId i czy ta strona to public-page lub private-page witryny (lub społeczności), więc oto 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 wraz z ich identyfikatorami instancji. Więc teraz z listy możesz po prostu odfiltrować iframe-portlet na /search strona za pomocą com.liferay.portal.util.PortletKeys.IFRAME i dostaniesz coś takiego 48_INSTANCE_rPv9.