2012-08-06 32 views
14

¿Cómo puedo encontrar qué portlets se agregan en una página de Liferay en particular?¿Cómo encontrar los portlets agregados en una página en particular en Liferay?

Por ejemplo:
que tengo tres páginas: Bienvenido , Wiki y búsqueda.

Ahora todas estas páginas tienen portlets agregados y algunos de ellos son portlets instanciables (como la visualización de contenido web y los portlets iframe).

Ahora quiero pasar algo de información en forma de parámetros de solicitud al iframe-portlet en el Search page desde el Welcome page.

Respuesta

20

he encontrado dos maneras de hacer esto:

  1. Si usted quiere encontrar los portlets en la misma página en la que se añade el portlet a continuación, se puede hacer uso de themeDisplay objeto disponible para el portlet o 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. Si usted quiere encontrar los portlets en alguna página diferente, entonces usted debe saber tres cosas a saber; friendly-url, groupId y si esta página es un public-pageprivate-page o parte del sitio (o comunitario), así que aquí está el código:

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

El portletIdList contiene los portletIds completas con sus instanceIds. Así que ahora de la lista puede filtrar el iframe-portlet en la página /search usando com.liferay.portal.util.PortletKeys.IFRAME y obtendrá algo como 48_INSTANCE_rPv9.

Cuestiones relacionadas