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 1Znalazłem dwa sposoby, aby to zrobić:
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();
Jeśli chcesz znaleźć portlety na innej stronie, powinieneś wiedzieć trzy rzeczy:
friendly-url
,groupId
i czy ta strona topublic-page
lubprivate-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
.